This question already has answers here:
What does “dyn” mean in a type?
(3个答案)
2年前关闭。
在Rust 1.27.0中,引入了一种新语法-添加了
它实际上是做什么的,为什么要添加呢?
(3个答案)
2年前关闭。
在Rust 1.27.0中,引入了一种新语法-添加了
dyn
关键字。 // old => new
Box<Foo> => Box<dyn Foo>
&Foo => &dyn Foo
&mut Foo => &mut dyn Foo
它实际上是做什么的,为什么要添加呢?
最佳答案
这有助于区分特征/特征对象和结构; &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>