我喜欢用烤肉串命名我的文件夹和文件。
最近,我一直在学习rust,并学习了一些关于模块的知识。在其中一个例子中,我有一个文件名为:distinct-powers.rs
。每当我使用mod distinct-powers
将代码置于作用域中时,我显然会得到一个语法错误,因为Rust不能处理kebab-case。错误是:Syntax Error: expected BANGrust-analyzer
,我认为它没有告诉我们任何信息,因为它认为错误是完全不同的。
有没有办法绕过Rust的这个限制?
1条答案
按热度按时间js5cn81o1#
如果确实需要,可以将模块的代码放在任意文件名中:
但请不要这样做-Rust的一个优点是它有一个单一的项目布局标准,这使得你可以很容易地深入到其他人的代码中。每一次定制都是对寻找他们所需代码的人的干扰。
有几个地方允许使用连字符,也就是说,在Rust包中 * 可以 * 使用烤肉串名字。它们都与构建系统Cargo有关,而不是与Rust语言本身有关。
Cargo.toml
中指定的)可以是kebab-case
。如果包是一个库,Cargo会自动将其翻译为snake_case
作为库的 crate name(这是你在Rust代码的依赖项中引用它的方式)。这是很常见的。例如,在此docs URL https://docs.rs/ordered-float/latest/ordered_float/中,您可以看到软件包名称为
ordered-float
,而crate名称(* 可以 * 被覆盖,但没有被覆盖)是从该名称派生的,为ordered_float
。target/
中生成的二进制文件可以具有串首字母大写的名称-cargo run --bin distinct-powers
是有效的。这些名称都可以由Cargo目标自动发现使用,因此 * 不 * 被视为非标准布局。