, 并且还贴心的提示我们把 Box 改成 Boxdyn View>, 按编译器的提示修改代码, 此时代码 no warning, no error, 完美....但 impl Trait 和 Boxdyn Trait> 除了允许多种返回值类型的之外还有什么区别吗? trait object 又是什么?...为什么 Box 形式的返回值会被废弃而引入了新的 dyn 关键字呢?
埋坑
impl Trait 和 dyn Trait 在 Rust 分别被称为静态分发和动态分发....静态分发, 正如静态类型语言的"静态"一词说明的, 在编译期就确定了具体调用类型. Rust 编译器会通过单态化(Monomorphization) 将泛型函数展开....总结
impl trait 和 dyn trait 区别在于静态分发于动态分发, 静态分发性能 好, 但大量使用有可能造成二进制文件膨胀; 动态分发以 trait object 的概念通过虚表实现, 会带来一些运行时开销