命名包含字符串“.rs”的板条箱有问题吗?
Is there a problem with naming a crate containing the string ".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
谁控制箱子名称
您 无法通过这种方式控制导入的 crate 的名称; the crate determines it 并且已经选了一个:
[package]
name = "gccjit"
如果要在导入时重命名现有包,必须使用 package
键匹配真实名称:
some_name = { package = "gccjit", git = "https://github.com/swgillespie/gccjit.rs.git" }
有关更多信息,请参阅 。
要在名称中使用句点,貌似可以使用字符串键(虽然我认为这样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 不关心源代码控制存储库的名称。它与包名称分开。虽然让它们有点相似更好,但没有真正的理由让它们必须有任何相关性。
包名称与库名称不同
此功能的使用次数非常少,但您的软件包的名称(a.k.a。 Crates.io 上的 crate 名称)可以与您的 库的名称不同 (导入到代码中的名称)。
活塞是我所知道的最大的"offender":
[package]
name = "piston2d-graphics"
version = "0.30.0"
[lib]
name = "graphics"
请不要使用它,因为尝试调试简直令人抓狂。
在命名依赖项 .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
谁控制箱子名称
您 无法通过这种方式控制导入的 crate 的名称; the crate determines it 并且已经选了一个:
[package]
name = "gccjit"
如果要在导入时重命名现有包,必须使用 package
键匹配真实名称:
some_name = { package = "gccjit", git = "https://github.com/swgillespie/gccjit.rs.git" }
有关更多信息,请参阅
要在名称中使用句点,貌似可以使用字符串键(虽然我认为这样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 不关心源代码控制存储库的名称。它与包名称分开。虽然让它们有点相似更好,但没有真正的理由让它们必须有任何相关性。
包名称与库名称不同
此功能的使用次数非常少,但您的软件包的名称(a.k.a。 Crates.io 上的 crate 名称)可以与您的 库的名称不同 (导入到代码中的名称)。
活塞是我所知道的最大的"offender":
[package]
name = "piston2d-graphics"
version = "0.30.0"
[lib]
name = "graphics"
请不要使用它,因为尝试调试简直令人抓狂。