是的,有问题。不要这样做。
您如何自己确定这一点
尝试使用你提出的代码,你会看到:
$ 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 的名称; the crate determines it 已经选好了:
[package]
name = "gccjit"
如果要在导入时重命名现有包,则必须使用package 键来匹配真实名称:
some_name = { package = "gccjit", git = "https://github.com/swgillespie/gccjit.rs.git" }
请参阅How to idiomatically alias a crate in Rust 2018? 了解更多信息。
要在名称中使用句点,您似乎可以使用字符串键(虽然我认为这是is a bug):
"gcc.jit" = { package = "gccjit", git = "https://github.com/swgillespie/gccjit.rs.git" }
但是,包名必须是有效的 Rust 标识符,句点不是。如果你这样做,没有办法使用这个包。
反正都是多余的
更多的意见,这样的名字是完全没有意义的。您不需要在名称中说“rs”或“rust”,因为当然它是 Rust 代码。如果不是,您一开始就不能将其用作依赖项。
出于同样的原因,我们不会将我们的软件包称为“计算机源代码真棒工具”——这是隐含的。
包名与源代码管理不同
Cargo 和 Rust 不关心源代码控制存储库的名称。它与包名是分开的。虽然最好让它们有点相似,但没有真正的理由必须让它们有任何相关性。
包名与库名不同
这是一个非常少使用次数的功能,但是您的 package 的名称(也就是 Crates.io 上的 crate 的名称)可能不同于您的库的名称(导入到代码中的内容)。
活塞是我所知道的最大的“罪犯”:
[package]
name = "piston2d-graphics"
version = "0.30.0"
[lib]
name = "graphics"
请不要使用它,因为尝试调试只会让人抓狂。