gpt4 book ai didi

rust - 如何告诉 Cargo 使用 git 存储库作为间接依赖的来源而不是 crates.io?

转载 作者:行者123 更新时间:2023-11-29 07:43:17 25 4
gpt4 key购买 nike

A few days ago ,通过 Emscripten 交叉编译为 JavaScript 终于在夜间流行了。我想以这种方式使用 glium 编译一个项目。然而,在许多 crate 中仍然存在许多与 Emscripten 相关的错误。虽然维护人员通常会快速修复这些错误,但他们不一定会将这些错误修复发布到 crates.io立即。

在我的例子中,glium 依赖于 glutinglutin 有一个错误现在已修复,但仅在 git 存储库中,而不是在 crates.io 中。 注意:glutin 不是我项目的直接依赖;只有通过 glium 的间接方式!

我如何告诉 Cargo 使用 the glutin repository作为 glutin 的来源而不是 crates.io

最佳答案

您可以在项目的 Cargo.toml 中使用[replace] 部分。您可以找到有关该功能的文档 here in the Cargo documentation .

在您的例子中,glium 依赖于 glutin 0.6.1。 crates.io 上的版本 0.6.1 仍然包含该错误。所以只需将其添加到您的 Cargo.toml 中:

[replace]
"glutin:0.6.1" = { git = 'https://github.com/tomaka/glutin' }

但是请注意,

[...] that the replaced crate must not only have the same name but also the same version.

但即使在版本不匹配的情况下(存储库已经包含更新的版本),如果 crate 的维护者为每个版本创建 git 标签(Rust 社区中的许多人都这样做),你仍然可能很幸运。在这种情况下,您只需指定标签即可:

[replace]
"glutin:0.6.1" = {
git = 'https://github.com/tomaka/glutin'
tag = 'v0.6.1'
}

遗憾的是,这不适用于 glutin,因为维护者并未为每个版本创建标签。在这种情况下,您可以简单地找到版本升级之前的最后一次提交,并使用 rev = 'b4a3d0...' 指定它,或者使用 指定特定分支>branch = '...' 键。

关于rust - 如何告诉 Cargo 使用 git 存储库作为间接依赖的来源而不是 crates.io?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40070903/

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