新关键字
摘要
动机
用于 trait 对象的 dyn Trait
dyn Trait
特性是使用 trait 对象的新语法。简而言之
Box<Trait>
变为Box<dyn Trait>
&Trait
和&mut Trait
变为&dyn Trait
和&mut dyn Trait
等等。在代码中
#![allow(unused)] fn main() { trait Trait {} impl Trait for i32 {} // old fn function1() -> Box<Trait> { unimplemented!() } // new fn function2() -> Box<dyn Trait> { unimplemented!() } }
就是这样!
为什么?
仅使用 trait 名称作为 trait 对象被证明是一个糟糕的决定。当前的语法通常含糊不清且令人困惑,即使对于老手也是如此,并且倾向于一个不如其替代方案更常用的功能,有时速度较慢,并且当其替代方案可以使用时,通常根本无法使用。
此外,随着 impl Trait
的出现,“impl Trait
vs dyn Trait
” 比 “impl Trait
vs Trait
” 对称得多,因此更好一些。impl Trait
在这里解释。
在新版本中,因此您应该在需要 trait 对象的地方优先使用 dyn Trait
而不是仅仅使用 Trait
。
async
和 await
这些关键字被保留用于实现 Rust 的 async-await 功能,该功能最终在 1.39.0 版本中发布并稳定。
try
关键字
try
关键字被保留用于 try
块中,该块尚未(在撰写本文时)稳定(跟踪问题)