泛型
泛型函数/结构体/枚举、单态化、性能特性
泛型
Rust 泛型在编译时单态化(Monomorphization)——为每个具体类型生成专用代码,零运行时开销。
学完本章你将: 掌握泛型函数/结构体/枚举、单态化、性能。
泛型函数
rust
fn largest<T: PartialOrd>(list: &[T]) -> &T {
let mut largest = &list[0];
for item in list {
if item > largest {
largest = item;
}
}
largest
}
fn main() {
let nums = vec![34, 50, 25, 100, 65];
println!("{}", largest(&nums)); // 100
let chars = vec!['y', 'm', 'a', 'q'];
println!("{}", largest(&chars)); // 'y'
}
泛型结构体
rust
struct Point<T> {
x: T,
y: T,
}
// 泛型方法
impl<T> Point<T> {
fn x(&self) -> &T { &self.x }
}
// 只为特定类型实现方法
impl Point<f64> {
fn distance_from_origin(&self) -> f64 {
(self.x.powi(2) + self.y.powi(2)).sqrt()
}
}
fn main() {
let p1 = Point { x: 5, y: 10 };
let p2 = Point { x: 1.0, y: 4.0 };
println!("{}", p1.x()); // 5
println!("{:.2}", p2.distance_from_origin());
}
单态化
rust
// 你写的:
let integer = Some(5);
let float = Some(5.0);
// 编译器生成的(简化版):
// enum Option_i32 { Some(i32), None }
// enum Option_f64 { Some(f64), None }
// 每种类型都生成独立代码——零运行时开销