为什么要引入dyn语法?

时间:2018-06-22 11:37:04

标签: syntax rust keyword

Rust 1.27.0中引入了一种新语法-添加了dyn关键字。

  // old => new
  Box<Foo> => Box<dyn Foo>
  &Foo => &dyn Foo
  &mut Foo => &mut dyn Foo

它实际上是做什么的,为什么要添加?

1 个答案:

答案 0 :(得分:27)

这有助于区分特征/特征对象和结构; &FooBox<Foo>impl Bar for Foo是模棱两可的,因为在全部Foo中,它们可能是特征或结构。

通过添加dyn,这不再是模棱两可了,因为特征由dyn关键字来区分:

// trait objects (new dyn syntax)
&Foo     => &dyn Foo
&mut Foo => &mut dyn Foo
Box<Foo> => Box<dyn Foo>

// structs (no change)
&Bar
&mut Bar
Box<Bar>