第三篇 泛型、Trait 与函数式组合
前两篇已经让你看清了单个具体类型的内存表示与安全约束:你可以用结构体(struct)表达「且关系」的积类型,用枚举(enum)表达「或关系」的和类型,也能在编译期拦截悬垂引用与空指针。
一旦进入稍有规模的工程,下一个问题立刻浮现:当十几种不同的具体类型需要走同一套处理流程、或者对外提供同一组行为契约时,在没有类继承(class extends)的 Rust 里,代码该怎么写?
这一篇从「信息存放在哪里」出发。先把泛型参数 <T> 还原为编译期按需合成类型与机器码的单态化机制,再用 Trait 为不同类型挂载能力契约,看清静态分发与动态分发(16 字节虚表胖指针 dyn Trait)的取舍边界;随后将这些机制合流到日常工程出镜率最高的迭代器(for 循环)与闭包(Fn 家族)中。
本篇不提前展开智能指针的内部清理机制与跨函数生命周期参数。先把跨类型的抽象契约与多态成本算清。
本篇正在创作中,章节陆续发布。