jus*_*use 1 module naming-conventions rust
我喜欢用短横线命名我的文件夹和文件。
最近,我一直在学习 Rust,了解了一些关于模块的知识。在其中一个示例中,我有一个名为: 的文件distinct-powers.rs。每当我mod distinct-powers将代码放入作用域时,我显然都会遇到语法错误,因为 Rust 无法处理 kebab-case。错误是:Syntax Error: expected BANGrust-analyzer我认为这没有告诉我们任何信息,因为它认为错误是完全不同的。
有什么办法可以绕过 Rust 的这个限制吗?
Kev*_*eid 11
如果你真的愿意,你可以将 module\xe2\x80\x99 代码放置在任意文件名中:
\n#[path = "distinct-powers.rs"]\nmod distinct_powers;\nRun Code Online (Sandbox Code Playgroud)\n但请不要\xe2\x80\x99t \xe2\x80\x94 Rust 的一大优点是项目布局有一个单一的标准,这使得深入研究其他人\xe2\x80\x99 的代码变得很容易。每次定制都会对寻找他们正在寻找的代码的人造成干扰。
\n有几个位置允许使用连字符,即 kebab-case 名称可以在 Rust 包中使用短横线命名。它们都与构建系统 Cargo 有关,而不是 Rust 语言本身。
\n包本身的名称(如 中指定的Cargo.toml)可以是kebab-case。如果包是一个库,Cargo 会自动将其翻译snake_case为库的板条箱名称(这就是您在依赖项中的 Rust 代码中引用它的方式)。这是很常见的做法。
例如,在此文档 URL https://docs.rs/ordered-float/latest/ordered_float/中,您可以看到包名称是,ordered-float而包名称(可以被覆盖但未被覆盖)是从中派生的作为ordered_float。
二进制文件、示例或测试目标的名称可以包含连字符。这意味着内置的二进制文件target/可以具有短横线大小写的名称 \xe2\x80\x94\xc2\xa0cargo run --bin distinct-powers是有效的。
这些名称都可以由Cargo 目标自动发现使用,因此不被视为非标准布局。
\nkebab-enthusiast/\n Cargo.toml\n src/\n lib.rs\n snake_module.rs\n bin/\n kebab-binary.rs\n examples/\n kebab-example.rs\n tests/\n kebab-test.rs\nRun Code Online (Sandbox Code Playgroud)\n