Trait 约束与 where
T: Trait 与 where 子句写法
本节你将能
用 T: Trait 与 where 为泛型添加清晰约束。
直觉模型
约束是招聘条件:候选人(类型)必须会 Debug、会比较、会克隆……否则不录用(编不过)。
核心要点
- 简写:
fn f<T: Display + Clone>(x: T) - 复杂时用
where提高可读性 impl Trait可作参数/返回类型(存在类型的语法糖)
fn notify(item: &T)
where
T: Summary + std::fmt::Display,
{
println!("Breaking: {item}");
}
常见误区
约束堆太多导致签名难读——拆小函数或引入中间 trait。
动手
写泛型函数:打印任意实现 Display 的值两次。
互动
测验:选择正确的 bound 写法。
本节小结
下一节对比「泛型单态化」与「trait 对象动态分发」。