将警告提升为错误
总结
- 在 Rust 2021 中,触发
bare_trait_objects
和ellipsis_inclusive_range_patterns
提示的代码将报错。
详情
在 Rust 2021 中,两个现有的提示将变为硬错误,但这些提示在旧版本中将保持警告。
bare_trait_objects
:
在 Rust 2021 中,使用 dyn
关键字来标识特征对象将是强制性的。
例如,以下代码在 &MyTrait
中不包含 dyn
关键字,在 Rust 2021 中将产生错误而不是仅仅是警告
#![allow(unused)] fn main() { pub trait MyTrait {} pub fn my_function(_trait_object: &MyTrait) { // should be `&dyn MyTrait` unimplemented!() } }
ellipsis_inclusive_range_patterns
:
用于包含范围模式(即,范围的结束值*包含*在范围内)的已弃用的 ...
语法在 Rust 2021 中不再被接受。它已被 ..=
取代,这与表达式一致。
例如,以下代码在模式中使用 ...
,在 Rust 2021 中将产生错误而不是仅仅是警告
#![allow(unused)] fn main() { pub fn less_or_eq_to_100(n: u8) -> bool { matches!(n, 0...100) // should be `0..=100` } }
迁移
如果您的 Rust 2015 或 2018 代码没有针对 bare_trait_objects
或 ellipsis_inclusive_range_patterns
产生任何警告,并且您没有通过使用 #![allow()]
或其他机制允许这些提示,则无需迁移。
要自动迁移任何在模式中使用 ...
或不将 dyn
与特征对象一起使用的代码库,您可以运行 cargo fix --edition
。