泛型函数与结构体
用类型参数消除重复并保持静态分发
本节你将能
为函数与结构体添加类型参数,并理解单态化(静态分发)。
直觉模型
泛型是「填空题模板」:编译器按实际类型各生成一份具体代码,运行时通常零开销。
核心要点
fn largest<T: PartialOrd>(list: &[T]) -> &T- 结构体字段可持有
T:struct Point<T> { x: T, y: T } - 默认静态分发;需要时可配合 trait 对象做动态分发
struct Pair { a: T, b: T }
fn first(p: &Pair) -> &T { &p.a }
常见误区
以为泛型总是「装箱慢」——单态化后通常与手写具体类型一样快。
动手
实现泛型 swap<T>(a: &mut T, b: &mut T)。
互动
测验:泛型何时需要约束。
本节小结
下一节用 Trait 描述「T 必须会做什么」。