fn main() { // 函数定义中的泛型 fn largest(list: &[T]) -> T { let mut largest = list[0]; for &item in list { if item > largest { largest = item; } } largest } // 结构体定义中的泛型 struct Point { x: T, y: T, } let point = Point { x: 1, y: 1 }; // 枚举定义中的泛型 enum Type { Cat(T), Dog(T), } let catA = Type::Cat("Tom"); // 方法定义中的泛型 impl Point { fn x(&self) -> &T { &self.x } } // struct里的泛型类型参数可以和方法的泛型类型参数不同 struct Point1 { x: T, y: U, } impl Point1 { fn mixup(self, other: Point1) -> Point1 { Point1 { x: self.x, y: other.y, } } } }