主页 > IT业界  > 

【06】泛型

【06】泛型

文章目录 泛型函数中的泛型结构体中的泛型结构体中的方法 枚举中的泛型

泛型

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), }
标签:

【06】泛型由讯客互联IT业界栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“【06】泛型