hyperium / hyper

An HTTP library for Rust
https://hyper.rs
MIT License
14.42k stars 1.59k forks source link

Lack of documentation on Read trait #3649

Open Mubelotix opened 5 months ago

Mubelotix commented 5 months ago

I have come to the need of implementing hyper::rt::Read on a custom struct. It seems to me that its documentation has been copy-pasted from tokio's AsyncRead, except it's outdated since the signature has been changed. For some reason not stated in the doc, a ReadBufCursor is used instead of the original ReadBuf. Now, I simply couldn't understand from the doc how I was supposed to implement Read, considering ReadBufCursor only has 2 unsafe methods and isn't too-well documented either. I would greatly appreciate further official guidance on implementing the Read trait. Thank you for making hyper

seanmonstar commented 5 months ago

Agreed, it is lacking in documentation. That'd be helpful to improve.

Regarding the ReadBufCursor, that comes from lessons learned in Tokio: only passing a &mut Thing allows the receiver to do something like *buf = Box::leak(blah), and then the underlying buffer pointer is different. You can see a similar "improvement" in the unstable std::io::BorrowedBuf and BorrowedCursor.

It only has the minimum methods in hyper because I wanted "needs" to drive adding methods, instead of trying to guess which might be useful.

npetrangelo commented 1 month ago

What is the status of this issue? It looks like there's a doc comment on it now https://github.com/hyperium/hyper/blob/master/src/rt/io.rs