用泛型参数写出适用于多种类型的函数和结构体。
用 trait 定义共享接口和默认方法。
用 Box<dyn Trait> 在运行时存放不同类型。
理解闭包如何捕获环境,以及 Fn、FnMut、FnOnce 的区别。