目录

Rust 泛型与 Trait

泛型让你写「一套代码适配多种类型」,Trait 则定义「类型能做什么」。两者结合,是 Rust 抽象能力的核心。

https://img.zhaojq.top/20260804234640656.png
Rust 进阶:Trait 与泛型

泛型函数

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. 生命周期