gen 关键字

概要

详情

gen 关键字被保留是 RFC #3513 的一部分,目的是在未来 Rust 版本中引入 “gen 代码块”。gen 代码块将提供一种更轻松编写特定类型迭代器的方法。现在保留该关键字将使 gen 代码块更容易在下一个版本之前稳定下来。

迁移

引入 gen 关键字可能会为任何已经命名为 gen 的标识符带来问题。例如,任何名为 gen 的变量或函数名都会与新的关键字冲突。为了克服这个问题,Rust 支持使用 r# 前缀作为原始标识符,这允许标识符与关键字重叠。

keyword_idents_2024 lint 将自动修改任何名为 gen 的标识符为 r#gen,以便代码在两个版本上都能继续工作。此 lint 是 rust-2024-compatibility lint 组的一部分,该 lint 组将在运行 cargo fix --edition 时自动应用。要将您的代码迁移为与 Rust 2024 版本兼容,请运行

cargo fix --edition

例如,这将改变

fn gen() {
    println!("generating!");
}

fn main() {
    gen();
}

变为

fn r#gen() {
    println!("generating!");
}

fn main() {
    r#gen();
}

或者,您可以手动启用 lint 以查找需要修改为 r#gengen 标识符的位置

#![allow(unused)]
fn main() {
// Add this to the root of your crate to do a manual migration.
#![warn(keyword_idents_2024)]
}