这是开发必备、高频使用的 Rust 核心 Trait 速查清单,按用途分类,包含作用、核心方法、使用场景和示例,直接背 / 查即可。
一、基础核心 Trait(必学,编译器自动推导)
1. Debug
- 作用:为类型提供调试打印能力(
println!("{:?}", val)) - 核心:
fmt::Debug格式化 - 用法:几乎所有类型都应实现,
#[derive(Debug)]自动生成
#[derive(Debug)] struct User { name: String }
2. Display
- 作用:提供用户友好的打印(
println!("{}", val)) - 核心:
fmt::Display格式化 - 场景:给最终用户展示的类型
impl fmt::Display for User { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { write!(f, "User: {}", self.name) } }
3. Clone
- 作用:创建深拷贝 / 显式复制,开销明确
- 核心:
fn clone(&self) -> Self - 用法:
#[derive(Clone)]自动实现
let a = String::from("hello"); let b = a.clone(); // 显式复制,不转移所有权
4. Copy
- 作用:标记类型为值类型,赋值时自动复制(无所有权转移)
- 核心:标记 Trait(无方法)
- 限制:仅能用于简单栈上类型(如
i32、bool) - 用法:
#[derive(Copy, Clone)](必须搭配 Clone)
5. Default
- 作用:提供类型的默认值
- 核心:
fn default() -> Self - 场景:初始化空值、配置项
#[derive(Default)] struct Config { port: u16 } let cfg = Config::default(); // port = 0
二、比较与相等 Trait(判断、排序必备)
6. PartialEq
- 作用:部分相等判断(支持
==、!=) - 核心:
fn eq(&self, other: &Self) -> bool - 用法:
#[derive(PartialEq)]
7. Eq
- 作用:完全相等(满足自反性,是 PartialEq 的子集)
- 核心:标记 Trait
- 用法:
#[derive(PartialEq, Eq)]
8. PartialOrd
- 作用:部分比较(支持
<、>、<=、>=) - 核心:
fn partial_cmp(&self, other: &Self) -> Option<Ordering> - 场景:可比较但非全序的类型(如浮点数)
9. Ord
- 作用:全序比较(可排序)
- 核心:
fn cmp(&self, other: &Self) -> Ordering - 场景:排序、二叉树、
BTreeMap键 - 用法:
#[derive(PartialOrd, Ord)]
三、迭代器 Trait(遍历数据核心)
10. Iterator
- 作用:迭代遍历集合(
for循环底层) - 核心:
fn next(&mut self) -> Option<Self::Item> - 自带方法:
map、filter、collect、for_each等 50+
let v = vec![1,2,3]; for i in v.iter() {} // 底层就是 Iterator
11. IntoIterator
- 作用:将类型转为迭代器
- 核心:
fn into_iter(self) -> Self::IntoIter - 场景:让自定义类型支持
for循环直接遍历
四、类型转换 Trait
12. From
- 作用:值转换(消费输入,无失败)
- 核心:
fn from(T) -> Self - 优势:自动实现
Into,可读性强
let s = String::from("hello"); let i = i32::from(1u8);
13. Into
- 作用:值转换(被 From 自动实现)
- 核心:
fn into(self) -> U - 场景:链式调用、方法参数转换
let s: String = "hello".into();
14. TryFrom / TryInto
- 作用:可能失败的转换(返回
Result) - 核心:
fn try_from(T) -> Result<Self, Error> - 场景:大数转小数、字符串转数字
let i: Result<i8, _> = 200u8.try_into(); // 失败返回 Err
15. AsRef
- 作用:借用转换(不消费所有权,零开销)
- 核心:
fn as_ref(&self) -> &T - 场景:函数参数通用化(接受
String/&str)
fn print(s: impl AsRef<str>) { println!("{}", s.as_ref()); }
16. AsMut
- 作用:可变借用转换
- 核心:
fn as_mut(&mut self) -> &mut T
五、资源管理与错误处理 Trait
17. Drop
- 作用:资源释放(离开作用域自动调用)
- 核心:
fn drop(&mut self) - 场景:关闭文件、释放锁、清理内存
18. Deref
- 作用:解引用(支持
*val) - 核心:
fn deref(&self) -> &Self::Target - 场景:智能指针(
Box、String、Vec)自动解引用
19. DerefMut
- 作用:可变解引用
- 核心:
fn deref_mut(&mut self) -> &mut Self::Target
六、错误处理 Trait
20. Error
- 作用:自定义错误类型标准
- 核心:
source()(获取底层错误)、to_string() - 用法:配合
thiserror库自动实现
#[derive(Debug, thiserror::Error)] enum MyError { #[error("IO error: {0}")] Io(#[from] std::io::Error), }
快速记忆表(极简版)

浙公网安备 33010602011771号