重复代码
提取函数。
fn largest(list: &[i32]) -> i32 {
let mut largeNumber = list[0];
for item in list {
if *item > largeNumber {
largeNumber = *item
}
}
largeNumber
}
泛型
提高代码的复用能力。
泛型是具体类型或其他属性的一种代替:泛型只是一种模板,里面有一些占位符。
泛型的命名规范
大驼峰。
泛型的使用
必须先声明泛型后使用。
fn larget<T>(list: &[T]) -> T {...}
这里还没有指定特定的trait。
结构体泛型声明
struct Point<T> {x: T}
泛型的结构体的内的类型都要相同,实现这个目的,实现两个不同或相同的类型。struct Point<T, U> {x: T, y: U}
结构体方法声明
如果使用泛型结构体方法,那么也要声明泛型的。具体类型就不用
impl<T> Point<T> {}
impl Point<i32> {}
把T放在impl关键字后,标识在类型T上实现方法。
Option Result<T, E>
这两个都是泛型。