在命名依赖项.rs时是否将来会出现任何问题,
[dependencies]
gccjit.rs = { git = "https://github.com/swgillespie/gccjit.rs.git" }
在上面的代码中,我将.rs
用于非Rust源代码文件。这不是很理想还是可以,因为默认使用与存储库相同的名称会更容易吗?
如果一个对象被命名为.rs
,它可能会被自动识别为Rust源代码,但在这种情况下不是。
答案 0 :(得分: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
您不必那样控制导入的板条箱的名称; 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代码。如果不是这样,那么您一开始就无法将其用作依赖项。
出于相同的原因,我们不称我们的软件包为“ computer-source-code-awesome-tool”(暗示很多)。
Cargo和Rust不在乎源代码控制存储库的名称。它与程序包名称分开。虽然最好让它们有些相似,但没有任何真正原因必须与之相关。
此功能的使用次数很小,但您的 package 名称(即Crates.io上的板条箱名称)可以与库的名称(导入到代码中的名称)。
活塞是我所知道的最大“罪犯”:
[package]
name = "piston2d-graphics"
version = "0.30.0"
[lib]
name = "graphics"
请,请不要使用它,因为这很疯狂,很容易尝试调试。