As an interning database(TiKV) developer (and I also use Rust for many other projects), I want to let Rust’s package manager cargo’s [patch] looks at the full source instead of only the URL, because patching dependencies are quite often in a large project, and [patch]‘s lacking awareness on the full source of the package do cause some trouble for us.

A good example of the problems caused by it is TiKV#8500, we want to patch crossbeam-queue to v0.2.3 to prevent a memory leak problem of it, but although v0.2.3 has been already on crates.io, the version in crossbeam’s git repo is still v0.2.2, and make it hard to do the patch. I think it would be great for cargo to support things like:

1
2
[patch]
crossbean-queue = {version = "0.2.3"} # from crates.io by default

I’m not the only one who wants that kind of things, there’re already some related issues on cargo’s repo, eg. #5478 and #7497, and it seems the developers don’t have time to prioritize and implement this.

PS. However, I’m interested in taking care of this feature, but I don’t know how to 😭.


Contact me: My email is longfangsong@icloud.com, and my username is @longfangsong on GitHub.