syntax - 为什么要引入 dyn 语法?
问题描述
在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>
推荐阅读
- spring - Spring WebServiceTemplate 将值添加到 Cookie 标头
- pyspark - 如何在新的数据块连接中正确使用 sql/hive 变量
- excel - 闪烁填充时功能不更新
- sql - SQL 编写一个返回的请求: 客户 - 仅限上个月每天至少有一个订单的客户
- python - 层 'meta-python' 取决于版本 >= 层 'core' 的 12
- flutter - Flutter 将函数传递给 TextEditingController(text)
- r - 在一个数据帧中的坐标处获取深度值,最接近另一个数据帧中的坐标
- python - 如何自动包装 Pylance 提供的 VSCode python intelliSence?
- android - 是否可以在 Android 中制作两个滑块 MotionLayout?
- terraform - Terraform 错误此值没有任何索引