欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 美景 > 【06】泛型

【06】泛型

2025/6/15 11:07:47 来源:https://blog.csdn.net/qq_45401419/article/details/145612422  浏览:    关键词:【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),
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词