如何使用Patch.crates-io覆盖两个不同版本的板条箱的货物箱依赖性?

发布于 2025-02-13 21:30:12 字数 582 浏览 0 评论 0原文

我正在尝试修补有问题的板条箱,这些板条箱间接地包含在项目中的板条箱。但是问题是,我看到两个不同的板条箱使用了两个不同版本的有问题的板条箱。使用patch.crates-io,我只能修补一个有问题的板条箱。

为了解释我的问题,这是代码插图。

可以说,我有一个名为“ myproject”的项目,其中包括板条箱“ A”和板条箱“ b”。板条箱“ A”和板条箱“ B”都包括板条箱“ C”,但两个不同的版本(假设0.1.1和0.2.2)。但是板条箱“ C”需要一些自定义来解决一些影响我项目的问题。制作了两个版本的本地副本后,我进行了一些修复程序,现在我想用patch.crates-io更新myproject。但是我只能为一个版本的板条板“ C”提供补丁。

在myproject.toml中

[patch.crates-io]
C = { version = "0.1.1", path = "../mylocalpath/C" }

如此问题是,是否有一种方法可以修补两个版本的“ C”,而无需制作板条箱“ A”或Crate'B'的本地副本?

I am trying to patch problematic crate that is included indirectly by crates that I include in my project. But issue is, I see two different crates use two different versions of problematic crate. Using patch.crates-io, I could patch just one version of problematic crate.

To explain my problem, here is the code illustration.

Lets say I have a project called 'myproject' which includes Crate 'A' and Crate 'B'. Both Crate 'A' and Crate 'B' includes Crate 'C' but two different version (Lets say 0.1.1 and 0.2.2). But crate 'C' needs some customization to fix some issues that is affecting my project. After making local copies of both versions, I made some fixes and now I want to update myproject with patch.crates-io like below. But I could provide patch to only one version of Crate 'C'.

In myproject.toml

[patch.crates-io]
C = { version = "0.1.1", path = "../mylocalpath/C" }

So question is, is there a way of patching both versions of crate 'C' without making local copies of crate 'A' or crate 'B'?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

离去的眼神 2025-02-20 21:30:12

我发现罗德里戈的评论非常有帮助。

如果您想要一个代码示例,则在这里我使用板条箱rand

[patch.crates-io]
rand = { version = "0.8.5", git = "https://github.com/rust-random/rand", rev="0.8.5" }
rand2 = { version = "0.7.3", git = "https://github.com/rust-random/rand", rev="0.7.3", package="rand" }

如果您运行货物树,则可以看到已应用该补丁程序。

I found Rodrigo's comment very helpful.

If you want a code example, here i've done so with the crate rand:

[patch.crates-io]
rand = { version = "0.8.5", git = "https://github.com/rust-random/rand", rev="0.8.5" }
rand2 = { version = "0.7.3", git = "https://github.com/rust-random/rand", rev="0.7.3", package="rand" }

If you run cargo tree, you can see that the patch has been applied.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文