Rust 泛型与 Trait
目录
泛型让你写「一套代码适配多种类型」,Trait 则定义「类型能做什么」。两者结合,是 Rust 抽象能力的核心。
泛型函数
fn largest<T: PartialOrd + Copy>(list: &[T]) -> T {
let mut max = list[0];
for &item in list {
if item > max { max = item; }
}
max
}<T: PartialOrd + Copy> 表示:T 必须能比较大小、且可拷贝。
定义 Trait
Trait 像接口,描述一组方法签名:
trait Summary {
fn title(&self) -> String;
fn summarize(&self) -> String {
format!("(摘要) {}", self.title()) // 默认实现
}
}为类型实现 Trait
struct Article { head: String }
impl Summary for Article {
fn title(&self) -> String { self.head.clone() }
}
fn main() {
let a = Article { head: "Rust 入门".into() };
println!("{}", a.summarize());
}Trait Bound 作为参数
fn notify(item: &impl Summary) {
println!("新消息: {}", item.summarize());
}小结
- 泛型消除重复代码;Trait 限定能力边界。
- Trait 可有默认实现,子类型按需覆盖。
- 想要「鸭子类型」行为?
impl Trait最直观。
➡️ 6. 生命周期