Struct tokio_util::io::StreamReader [−][src]
pub struct StreamReader<S, B> { /* fields omitted */ }
io
only.Expand description
Convert a Stream
of byte chunks into an AsyncRead
.
This type performs the inverse operation of ReaderStream
.
Example
use bytes::Bytes;
use tokio::io::{AsyncReadExt, Result};
use tokio_util::io::StreamReader;
// Create a stream from an iterator.
let stream = tokio_stream::iter(vec![
Result::Ok(Bytes::from_static(&[0, 1, 2, 3])),
Result::Ok(Bytes::from_static(&[4, 5, 6, 7])),
Result::Ok(Bytes::from_static(&[8, 9, 10, 11])),
]);
// Convert it to an AsyncRead.
let mut read = StreamReader::new(stream);
// Read five bytes from the stream.
let mut buf = [0; 5];
read.read_exact(&mut buf).await?;
assert_eq!(buf, [0, 1, 2, 3, 4]);
// Read the rest of the current chunk.
assert_eq!(read.read(&mut buf).await?, 3);
assert_eq!(&buf[..3], [5, 6, 7]);
// Read the next chunk.
assert_eq!(read.read(&mut buf).await?, 4);
assert_eq!(&buf[..4], [8, 9, 10, 11]);
// We have now reached the end.
assert_eq!(read.read(&mut buf).await?, 0);
Implementations
Gets a reference to the underlying stream.
It is inadvisable to directly read from the underlying stream.
Gets a mutable reference to the underlying stream.
It is inadvisable to directly read from the underlying stream.
Gets a pinned mutable reference to the underlying stream.
It is inadvisable to directly read from the underlying stream.
Consumes this BufWriter
, returning the underlying stream.
Note that any leftover data in the internal buffer is lost.
Trait Implementations
impl<S, B, E> AsyncBufRead for StreamReader<S, B> where
S: Stream<Item = Result<B, E>>,
B: Buf,
E: Into<Error>,
impl<S, B, E> AsyncBufRead for StreamReader<S, B> where
S: Stream<Item = Result<B, E>>,
B: Buf,
E: Into<Error>,
Attempts to return the contents of the internal buffer, filling it with more data from the inner reader if it is empty. Read more
Auto Trait Implementations
impl<S, B> RefUnwindSafe for StreamReader<S, B> where
B: RefUnwindSafe,
S: RefUnwindSafe,
impl<S, B> Send for StreamReader<S, B> where
B: Send,
S: Send,
impl<S, B> Sync for StreamReader<S, B> where
B: Sync,
S: Sync,
impl<S, B> UnwindSafe for StreamReader<S, B> where
B: UnwindSafe,
S: UnwindSafe,
Blanket Implementations
Reads all bytes into buf
until the delimiter byte
or EOF is reached. Read more
Reads all bytes until a newline (the 0xA byte) is reached, and append them to the provided buffer. Read more
Returns a stream of the contents of this reader split on the byte
byte
. Read more
Returns the contents of the internal buffer, filling it with more data from the inner reader if it is empty. Read more
Returns a stream over the lines of this reader.
This method is the async equivalent to BufRead::lines
. Read more
Creates a new AsyncRead
instance that chains this stream with
next
. Read more
Pulls some bytes from this source into the specified buffer, returning how many bytes were read. Read more
Pulls some bytes from this source into the specified buffer, advancing the buffer’s internal cursor. Read more
Reads the exact number of bytes required to fill buf
. Read more
Reads an unsigned 8 bit integer from the underlying reader. Read more
Reads a signed 8 bit integer from the underlying reader. Read more
Reads an unsigned 16-bit integer in big-endian order from the underlying reader. Read more
Reads a signed 16-bit integer in big-endian order from the underlying reader. Read more
Reads an unsigned 32-bit integer in big-endian order from the underlying reader. Read more
Reads a signed 32-bit integer in big-endian order from the underlying reader. Read more
Reads an unsigned 64-bit integer in big-endian order from the underlying reader. Read more
Reads an signed 64-bit integer in big-endian order from the underlying reader. Read more
Reads an unsigned 128-bit integer in big-endian order from the underlying reader. Read more
Reads an signed 128-bit integer in big-endian order from the underlying reader. Read more
Reads an 32-bit floating point type in big-endian order from the underlying reader. Read more
Reads an 64-bit floating point type in big-endian order from the underlying reader. Read more
Reads an unsigned 16-bit integer in little-endian order from the underlying reader. Read more
Reads a signed 16-bit integer in little-endian order from the underlying reader. Read more
Reads an unsigned 32-bit integer in little-endian order from the underlying reader. Read more
Reads a signed 32-bit integer in little-endian order from the underlying reader. Read more
Reads an unsigned 64-bit integer in little-endian order from the underlying reader. Read more
Reads an signed 64-bit integer in little-endian order from the underlying reader. Read more
Reads an unsigned 128-bit integer in little-endian order from the underlying reader. Read more
Reads an signed 128-bit integer in little-endian order from the underlying reader. Read more
Reads an 32-bit floating point type in little-endian order from the underlying reader. Read more
Reads an 64-bit floating point type in little-endian order from the underlying reader. Read more
Reads all bytes until EOF in this source, placing them into buf
. Read more
fn read_to_string(&'a mut self, dst: &'a mut String) -> ReadToString<'a, Self> where
Self: Unpin,
fn read_to_string(&'a mut self, dst: &'a mut String) -> ReadToString<'a, Self> where
Self: Unpin,
Reads all bytes until EOF in this source, appending them to buf
. Read more
Mutably borrows from an owned value. Read more