gpt4 book ai didi

rust - 命名包含字符串 ".rs"的 crate 有问题吗?

转载 作者:行者123 更新时间:2023-11-29 08:22:05 28 4
gpt4 key购买 nike

例如,命名依赖项 .rs 会不会有任何 future 问题,

[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 名称

无法通过这种方式控制导入的 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 标识符,句号不是。如果这样做,将无法使用该包

无论如何都是多余的

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

出于同样的原因,我们不称我们的包为“computer-source-code-awesome-tool”——这是隐含的。

包名称与源代码管理不同

Cargo 和 Rust 不关心源代码控制存储库的名称。它与包名称分开。虽然让它们有些相似更好,但没有真正的理由让它们必须有任何相关性。

包名与库名不同

这是一个非常小使用次数的功能,但是您的的名称(也就是 Crates.io 上的 crate 名称)可能不同于您的 的名称(导入到代码中的内容)。

Piston 是我所知道的最大的“违规者”:

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

[lib]
name = "graphics"

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

关于rust - 命名包含字符串 ".rs"的 crate 有问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54661124/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com