Perhaps people don't need some parts of reqwest that are provided for convenience. Such as, maybe someone only wants to post forms, and never needs JSON support. If each were behind a feature, a user could try to reduce the amount of dependencies they need to compile that they are not using.
I'm thinking you should leave it as is. This library is mainly meant to be an "ergonomic HTTP Client for Rust" and as such, users would expect it to be easy to use and have a lot of useful features that you wouldn't usually find in a lower level library like hyper. If I was just wanting to put together a quick proof-of-concept then I'd want something easy to use like reqwest, and given how much JSON is used nowadays for web services I'd probably want JSON support to be built in, instead of hidden behind a feature.
That said, you're already pulling in hyper and all its dependencies, so removing serde support to save a bit of extra disk space probably isn't worth it.
Ah, I meant to have most all of the features on by default. Someone could disable them and only enable the features they want, and if some other crate also uses reqwest with more features, cargo makes it work.
Most helpful comment
I'm thinking you should leave it as is. This library is mainly meant to be an "ergonomic HTTP Client for Rust" and as such, users would expect it to be easy to use and have a lot of useful features that you wouldn't usually find in a lower level library like
hyper. If I was just wanting to put together a quick proof-of-concept then I'd want something easy to use likereqwest, and given how much JSON is used nowadays for web services I'd probably want JSON support to be built in, instead of hidden behind a feature.That said, you're already pulling in
hyperand all its dependencies, so removingserdesupport to save a bit of extra disk space probably isn't worth it.