Describe the bug
It looks like the AsyncRead implementation on ResponseDataStream is incorrect. The only datapoint I have at the moment is that I consistently only get about 1/3 the number of bytes back from reading all of tokio_util::io::ReaderStream::new(response_data_stream) vs response_data_stream.bytes.
Converting a impl Stream<Item<Result<bytes::Bytes, _>>> to a impl AsyncRead and then reading it should yield all the same bytes as just reading the stream directly, and I'm guessing it's not an issue with the ReaderStream implementation. I'll do some more testing.
To Reproduce
let req = bucket.get_object_stream(key).await.unwrap();
let stream = req.bytes;
let mut data = Vec::new();
while let Some(Ok(chunk)) = stream.next().await {
data.extend(&chunk[..]);
}
println!("data.len() = {}", data.len());
// same as before, but now with:
let stream = tokio_util::io::ReaderStream::new(req);
Expected behavior
These two options produce the same number of bytes
Environment
- Rust version:
rustc 1.93.0-nightly (f37aa9955 2025-10-26)
- lib version
0.37.0
Describe the bug
It looks like the
AsyncReadimplementation onResponseDataStreamis incorrect. The only datapoint I have at the moment is that I consistently only get about 1/3 the number of bytes back from reading all oftokio_util::io::ReaderStream::new(response_data_stream)vsresponse_data_stream.bytes.Converting a
impl Stream<Item<Result<bytes::Bytes, _>>>to aimpl AsyncReadand then reading it should yield all the same bytes as just reading the stream directly, and I'm guessing it's not an issue with theReaderStreamimplementation. I'll do some more testing.To Reproduce
Expected behavior
These two options produce the same number of bytes
Environment
rustc 1.93.0-nightly (f37aa9955 2025-10-26)0.37.0