0

例如,在命名依赖项 .rs 时会不会有任何未来的问题,

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

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

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

4

1 回答 1

7

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

你怎么能自己决定这个

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

$ 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

谁控制箱子名称

无法以这种方式控制导入的 crate 的名称;板条箱确定它并且它已经选择了一个

[package]
name = "gccjit"

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

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

请参阅如何在 Rust 2018 中为 crate 起惯用别名?更多。

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

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

但是,包名必须是有效的 Rust 标识符,句点不是。如果这样做,就无法使用 package

反正都是多余的

更多的基于意见,这样的名字是完全没有意义的。您不需要在名称中说“rs”或“rust”,因为它当然是 Rust 代码。如果不是,您一开始就不能将其用作依赖项。

出于同样的原因,我们不会将我们的包称为“计算机源代码真棒工具”——这意味着很多。

包名称与源代码管理不同

Cargo 和 Rust 不在乎你的源代码控制存储库的名称是什么。它与包名是分开的。虽然最好让它们有点相似,但没有真正的理由它们必须有任何相关性。

包名与库名不同

这是一个很少使用的功能,但是你的的名称(也就是 Crates.io 上的 crate 的名称)可以与你的的名称(导入到代码中的内容)不同。

活塞是我所知道的最大的“罪犯”:

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

[lib]
name = "graphics"

不要使用它,因为尝试调试简直令人抓狂。

于 2019-02-13T02:39:04.720 回答