新关键字
总结
动机
用于特征对象的 dyn Trait
dyn 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!() } }
就是这样!
为什么?
仅使用特征名称作为特征对象被证明是一个糟糕的决定。当前的语法通常是模棱两可和令人困惑的,即使对于经验丰富的程序员也是如此,并且它偏向于一个并不比其替代方案更常用的功能,有时速度更慢,并且在其替代方案可以使用时通常根本无法使用。
此外,随着 impl Trait
的到来,“impl Trait
与 dyn Trait
” 比 “impl Trait
与 Trait
” 更对称,因此也更美观。impl Trait
在 此处 有解释。
因此,在新版本中,当您需要特征对象时,您应该更喜欢 dyn Trait
而不是 Trait
。
async
和 await
这些关键字保留用于实现 Rust 的 async-await 功能,该功能最终在 1.39.0 版本中稳定发布。
try
关键字
try
关键字保留用于 try
块,截至撰写本文时,该块尚未稳定(跟踪问题)