Hyper is a great HTTP library, however is limited to async contexts and even a specific async runtime. It cannot directly run synchronously, or run on a smol/async-std runtime. It always needs to carry the weight of a Tokio runtime no matter where it goes. Consider that ISRG is planning to embed Hyper into curl as an option, do you really want curl to contain a Tokio runtime as well?
IIRC Hyper used to support synchronous code, but they very intentionally dropped it and have no intent to support it again. At some point, they recommended using another crate if you need synchronous code.
Why not? What's wrong with that?
curl have its own async runtime, and
hyper have no issue to be run on it without tokio runtime spinning.
tokio doesn't seem to be a dependency of
hyper. It's only a dev-dependency, but not a runtime-dependency. Only if you use the
tokio seems to be required.
tokio is required recursively by some other dependency?)