I'm working on a CLI app that uses reqwest and self_update. self_update also uses reqwest. I want my app to use rustls and not pull in openssl dependencies. Cargo.toml allows choosing features of dependencies:
[dependencies.reqwest]
version = "0.10"
default-features = false
features = ["rustls-tls", "json", "blocking"]
It would be cool if sub-dependencies worked:
[dependencies.self_update.reqwest]
version = "0.10"
default-features = false
features = ["rustls-tls", "json", "blocking"]
I also looked at replace section, but only something like this works where I branch the code:
"reqwest:0.10.1" = { branch = "rustls", git = "https://github.com/ctaggart/reqwest" }
But what I want is default-features and features supported too:
"reqwest:0.10.1" = { tag="v0.10.1", git = "https://github.com/seanmonstar/reqwest", default-features = false, features = ["rustls-tls", "json", "blocking"] }
How do I configure the features of Reqwest or Tokio or any other highly configurable non-direct dependency using Cargo?
I agree with you, having support for sub-dependencies features would be great.
It's not ideal but if you add your sub-dependency as a dependency the feature is going to work.
[dependencies]
...
surf = "2.1.0" # which depends on http-client, which depends on isahc
...
[dependencies.isahc]
features = ["static-ssl"]
If you don't specify a version you'll get a deprecation warning, but at least you won't have to keep track of the sub-dependency version manually:
warning: dependency (isahc) specified without providing a local path, Git repository, or version to use. This will be considered an error in future versions
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With