用 trait 定义共享接口和默认方法。
用 Box<dyn Trait> 在运行时存放不同类型。
Rust 没有 class,却能用 struct + impl + trait 表达封装、构造、接口、多态与继承。
为自己的类型实现 Iterator trait,复用全部适配器。