命名包含字符串".rs"的板条箱有问题吗?



在命名依赖项时是否会有任何未来的问题。rs例如

[dependencies]
gccjit.rs = { git = "https://github.com/swgillespie/gccjit.rs.git" }

在上面的代码中,我将.rs用于非Rust源代码文件。这不理想吗?还是可以,因为默认使用与存储库相同的名称会更容易?

如果一个对象被命名为.rs,它可能会被自动识别为Rust源代码,但在这种情况下,它不是。

是的,有一个问题。不要这样做。

你怎么能自己决定

尝试使用你提出的代码,你会看到:

$ cargo build
error: failed to parse manifest at `.../Cargo.toml`
Caused by:
could not parse input as TOML
Caused by:
expected an equals, found a period at line 9

您也可以尝试创建一个具有相同名称的包。你会看到:

$ cargo new 'gccjit.rs.git'
error: Invalid character `.` in crate name: `gccjit.rs.git`
use --name to override crate name

谁控制板条箱名称

无法通过这种方式控制进口板条箱的名称;板条箱确定了它,并且它已经选择了一个:

[package]
name = "gccjit"

如果你想在导入时重命名现有的包,你必须使用package密钥来匹配真实名称:

some_name = { package = "gccjit", git = "https://github.com/swgillespie/gccjit.rs.git" }

请参阅如何在Rust 2018中对板条箱进行惯用别名?了解更多信息。

要在名称中使用句点,您似乎可以使用字符串键(尽管我认为这是一个错误):

"gcc.jit" = { package = "gccjit", git = "https://github.com/swgillespie/gccjit.rs.git" }

但是,包名称必须是有效的Rust标识符,而句点不是。如果你这样做,就没有办法使用包

反正是多余的

更多的是基于观点,这样的名字完全没有意义。您不需要在名称中说"rs"或"rust",因为当然是rust代码。如果不是,你就不能把它作为一个依赖。

出于同样的原因,我们不会称我们的软件包为"计算机源代码真棒工具"——这是隐含的。

包名称与源代码管理不同

Cargo和Rust并不关心源代码管理存储库的名称。它与包名称是分开的。虽然最好让它们有点相似,但没有真正的理由让它们有任何关联。

包名称与库名称不同

这是一个使用次数非常少的功能,但的名称(也称为Crates.io上的机箱名称)可能与(导入到代码中的内容)的名称不同。

据我所知,活塞是这方面最大的"罪犯":

[package]
name = "piston2d-graphics"
version = "0.30.0"
[lib]
name = "graphics"

不要使用它,因为尝试调试会让人抓狂。

相关内容

最新更新