Trait 定义与实现
定义共享行为并为空类型/外部类型实现
本节你将能
定义 Trait、为类型实现,并了解孤儿规则的直觉边界。
直觉模型
Trait 像接口:声明能力;impl Trait for Type 是某类型兑现承诺。
核心要点
- 可提供默认方法实现
- 派生宏:
#[derive(Debug, Clone)] - 孤儿规则:trait 或类型至少有一个在当前 crate,才能写 impl
trait Summary { fn summarize(&self) -> String; }
impl Summary for String {
fn summarize(&self) -> String { format!("{}...", &self[..20.min(self.len())]) }
}
常见误区
试图为外部类型实现外部 trait——会被孤儿规则拒绝,需 newtype 包装。
动手
定义 Describable 并为自定义结构体实现。
互动
测验:默认方法与派生宏的用途。
本节小结
下一节用 trait bound 限制泛型参数。