The wrapper crate hasn't got everything exposed for the Easy interface (I'll probably be submitting PRs to expose some missing stuff at some point), but seems good enough for me.
Only issue really I've found so far is that heap fragmentation seems orders of magnitude higher than the C++ version, and so memory useage grows quite alarmingly, but from heaptrack, that all seems to be from within openssl, with things like this (a rediculous number of heap allocations per request):
https://github.com/openssl/openssl/issues/14837
but I'm not sure why the older C++ version doesn't suffer from the same issues as it's doing the same thing with HTTPS requests and is also using openssl, so I still need to look into that...
Currently doing:
unsafe { libc::malloc_trim(0); }
every 5 minutes keeps the memory use under control, but again, I don't need to do that in the C++ version, so there's some difference somewhere in the libcurl stack between the two...
I personally wouldn't even consider hyper as an HTTP client for use in most projects, but reqwest adds a much more approachable API on top of hyper.
[0] https://github.com/seanmonstar/reqwest/blob/master/Cargo.tom...
Much of that is due to not needing Tokio & co.
Part of the problem is there are so many, which do you choose?
I found one (I forget the name to protect the guilty) but my simple use case broke it.
I reached out to the authors, very helpful, I think they fixed it.
But by then I had moved on (time is money)
I sucked it up and went with importing all the tokio stuff I did not need (I absolutely did not need, almost no one does)
Rust has painted itself into a corner. A really very good idea at its core, almost all of it is really terrific, but some corner cases like these make it very hard to take advantage of it
This just isn't a significant problem at all.
Nonsense.
If you are steeped in HTTPS clients for Rust, maybe, but I can tell you from personal experience that coming fresh to https://crates.io/search?q=https%20client and friends is overwhelming