为什么引入dyn语法?

Tim*_*ost 23 syntax keyword rust

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

  // old => new
  Box<Foo> => Box<dyn Foo>
  &Foo => &dyn Foo
  &mut Foo => &mut dyn Foo
Run Code Online (Sandbox Code Playgroud)

它实际上做了什么以及它为什么被添加?

lje*_*drz 35

这有助于区分特征/特征对象和结构; &Foo,Box<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>
Run Code Online (Sandbox Code Playgroud)