首页 > 解决方案 > 为什么要引入 dyn 语法?

问题描述

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

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

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

标签: syntaxrustkeyword

解决方案


这有助于区分特征/特征对象和结构;&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>

推荐阅读