patch 替换依赖
当你想要覆盖依赖图的某些部分时,可以使用你的 Cargo.toml 的 [patch] 部分。
cargo 有一个类似的
[replace]功能; 虽然我们不打算弃用或删除[replace],但在任何情况下都应该更喜欢[patch]。
那么它看起来像什么? 假设我们有一个看起来像这样的 Cargo.toml:
[dependencies]
foo = "1.2.3"
另外,我们的 foo 包依赖于 bar 包,我们在 bar 中发现了一个错误。为了测试这个,我们下载了 bar 的源代码,然后更新我们的 Cargo.toml:
[dependencies]
foo = "1.2.3"
[patch.crates-io]
bar = { path = '/path/to/bar' }
现在,当你 cargo build 时,它将使用本地版本的 bar,而不是来自 crates.io 的 foo 所依赖的版本。然后,您可以尝试更改,并修复该错误!
更多细节,查阅 the documentation for patch.