我选择了 Cursive 这个 Rust TUI 库. 在实现时有这么一个函数, 它会根据参数的不同返回某个组件(如 Button, TextView 等)....随着开发进度增加, 这个函数需要返回 Button, TextView 等组件中的一个, 我下意识地写出了类似于下面的代码
fn some_fn(param1: i32, param2: i32) -...但 impl Trait 和 Box 除了允许多种返回值类型的之外还有什么区别吗? trait object 又是什么?...但鉴于这种场景下都是在函数中创建然后返回该值的引用, 显然需要加上生命周期:
fn some_fn(param1: i32, param2: i32) -> &'static View { if...又因 trait object 与 Trait 在不引入 dyn 的情况下经常导致语义混淆, 所以 Rust 特地引入 dyn 关键字, 在 Rust 2018 中已经稳定.