rust-zero-cost
Installation
SKILL.md
泛型 vs Trait Object
| 特性 | 泛型 (static dispatch) | trait object (dynamic dispatch) |
|---|---|---|
| 性能 | 零开销 | vtable 查找 |
| 代码大小 | 可能膨胀 | 更小 |
| 编译时间 | 更长 | 更短 |
| 灵活性 | 类型必须已知 | 运行时决定 |
| 异构集合 | 不支持 | Vec<Box<dyn Trait>> |
何时用泛型
// 类型在编译时已知
fn process<T: Processor>(item: T) {
item.process();
}