为什么标识符不能以数字开头?

R.y*_*yan 3 rust

我有一个名为 的文件1_add.rs,我尝试将其添加到lib.rs. 然而,我在编译过程中遇到了以下错误。

error: expected identifier, found `1_add`
 --> src/lib.rs:1:5
  |
1 | mod 1_add;
  |     ^^^^^ expected identifier
Run Code Online (Sandbox Code Playgroud)

看来以数字开头的标识符无效。但为什么 Rust 会有这个限制呢?如果我想指示不同 rust 文件的顺序(用于管理练习文件),是否有任何解决方法?

ens*_*nsc 10

在你的情况下(你想命名文件,如1_foo.rs)你可以写

#[path="1_foo.rs"]
mod mod_1_foo;
Run Code Online (Sandbox Code Playgroud)

允许标识以数字开头可能会与类型注释发生冲突。例如

#[path="1_foo.rs"]
mod mod_1_foo;
Run Code Online (Sandbox Code Playgroud)

设置为键入u32. 1_u256当表示另一个变量时,这会令人困惑。


Ser*_*sev 6

但为什么 Rust 会有这个限制呢?

不仅是 Rust,我编写的代码行中的大多数语言也都有此限制。

值得深思的:

let a = 1_2;
Run Code Online (Sandbox Code Playgroud)

1_2变量名还是值的文字12?如果变量1_2现在不存在,但稍后添加它,这个标记是否不再是数字文字怎么办?

虽然 rust 编译器可能可以让它工作,但恕我直言,这不值得所有的混乱。

  • 还有 `1e10` 例如 (5认同)