Rust 2018 edition 虽然实际发布时间还没到(本文开始写的时间是 18 年七月底),但是有些 2018 edition 的特性已经随着 Rust 的新版本发布放出,这些已经进入 stable 版的特性必然是应当了解并学习的。其中就有两个本文所要讨论的关键字 —— impl
和 dyn
。
最先出现的 impl
是大家已经熟悉的关键字,不过这次这个关键字除了用于表示实现一个 Trait
,还有新的意义,即表达一个既存类型(Existential types)
,我们可以理解为一个实现了一个特征的 具体对象。
官方原文介绍:impl Trait https://rust-lang-nursery.github.io/edition-guide/2018/transitioning/traits/impl-trait.html
impl Trait
is the new way to specify unnamed but concrete types that implement a specific trait. There are two places you can put it: argument position, and return position.
trait Trait {}
// argument position
fn foo(arg: impl Trait) {
}
// return position
fn foo() -> impl Trait {
}
不过其意义是什么?与我们另一个要介绍的 dyn Trait
又有什么关系?下面我们正式开始。