Rust 语言学习手册

免费学习 系统级编程 内存安全

Rust学习手册《特征对象(Trait Object)与动态分发》:Trait 对象允许在运行时进行动态分发,使用 `dyn Trait`。 ```rust trait Draw { fn draw(&self); } struct Circle; impl Draw for Circle { fn dr...

进阶主题

特征对象(Trait Object)与动态分发

【详细说明 & 代码示例】
Trait 对象允许在运行时进行动态分发,使用 `dyn Trait`。 ```rust trait Draw { fn draw(&self); } struct Circle; impl Draw for Circle { fn draw(&self) { println!("circle"); } } struct Square; impl Draw for Square { fn draw(&self) { println!("square"); } } fn draw_shapes(shapes: Vec) { for shape in shapes { shape.draw(); // 动态分发 } } let shapes: Vec = vec![Box::new(Circle), Box::new(Square)]; ``` **静态分发 vs 动态分发:** - 泛型(静态)在编译时单态化,性能更好。 - Trait 对象(动态)使用虚表,有轻微运行时开销,但更灵活。 **对象安全性:** 只有满足对象安全(方法不返回 `Self` 且无泛型)的 trait 才能作为 trait 对象。

学习提示:建议安装 Rust 工具链(rustup),使用 cargo 构建项目,并熟悉 rustc 编译器错误信息(Rust 的报错非常详细友好)。

全部章节目录(共 63 个知识点)

Rust 基础 (1个知识点)

所有权系统 (1个知识点)

借用与引用 (1个知识点)

生命周期 (1个知识点)

Cargo 与工具链 (2个知识点)

使用说明

  • • 本手册涵盖 Rust 从基础到并发、异步、Web 开发的完整知识体系
  • • 在搜索框输入关键词,快速定位相关知识点
  • • 点击条目标题进入详情页,查看详细说明与代码示例
  • • 页面按分类展示所有知识点,方便系统性学习
  • • 建议通过 Rust 官方文档(doc.rust-lang.org)加深理解