【06】泛型
- IT业界
- 2025-09-06 20:27:02

文章目录 泛型函数中的泛型结构体中的泛型结构体中的方法 枚举中的泛型 泛型
RUST通过在编译时对泛型代码的单态化(monomorphization)来保证运行效率。即,在编译时对泛型填充具体数据类型转换为特定代码进行编译。 由于RUST编译试图穷举所有类型,所以代码需要支持所有类型才可以编译。或者限制为指定几个类型。<T>中的T指定任一数据类型。
函数中的泛型 fn fun1<T>(list: &[T]) -> &T {} 结构体中的泛型 struct Point<T> { x: T, y: T, } struct Point<T, U> { x: T, y: U, } 结构体中的方法 struct Point<T> { x: T, y: T, } // impl<T> 里面指定的泛型T impl<T> Point<T> { fn x(&self) -> &T { &self.x } }可以为实例实现方法,也就是单个数据类型
impl Point<f32>{ fn distance_from_origin(&self) -> f32 { (self.x.powi(2) + self.y.powi(2)).sqrt() } }impl<>中定义的方法也使用与impl<>不同的数据类型。
struct Point<X1, Y1> { x: X1, y: Y1, } impl<X1, Y1> Point<X1, Y1> { fn mixup<X2, Y2>(self, other: Point<X2, Y2>) -> Point<X1, Y2> { Point { x: self.x, y: other.y, } } } 枚举中的泛型 // 用于处理空的Option enum Option<T>{ Some(T), None, } // 用于处理错误的Result enum Result<T,E>{ Ok(T), Err(E), }