单态化
泛型代码根据调用位置转换为非泛型代码:
fn main() { let integer = Some(5); let float = Some(5.0); }
具体行为与您所编写的一样
enum Option_i32 { Some(i32), None, } enum Option_f64 { Some(f64), None, } fn main() { let integer = Option_i32::Some(5); let float = Option_f64::Some(5.0); }
这是零成本的抽象化处理:您得到的结果不会受到影响,也就是说,与在没有进行抽象化处理的情况下,对数据结构进行手动编码时的结果一样。