pub struct MultiReaders<T> { /* private fields */ }Expand description
A structure that manages multiple readers, allowing sequential or concurrent access to a collection of inner readers.
Implementations§
Source§impl<T> MultiReaders<T>
impl<T> MultiReaders<T>
Source§impl<T: IntoIterator<Item = E>, E> MultiReaders<T>
impl<T: IntoIterator<Item = E>, E> MultiReaders<T>
Sourcepub fn flatten(self) -> MultiReaders<E> ⓘ
pub fn flatten(self) -> MultiReaders<E> ⓘ
Creates a new MultiReaders instance by flattening the nested structure of the current instance.
This method transforms the nested structure of the MultiReaders into a single-level structure
by applying a flat_map operation on the inner elements.
§Panics
This method will panic if it is called after the first read operation.
It is intended to be used only during the initialization phase of the MultiReaders.
§Examples
use std::io::{Cursor, Read};
use multi_readers::{open, MultiReaders};
let hello = "hello";
let world = "world";
let none = "none";
let my_open = |s: &'static str | {
if s == "none" {
None
} else {
Some(Cursor::new(s))
}
};
let readers: MultiReaders<Option<Cursor<&str>>> = open!(my_open, [hello, none, world]);
let mut readers: MultiReaders<Cursor<&str>> = readers.flatten();
let mut buf = String::new();
readers.read_to_string(&mut buf).unwrap();
assert_eq!(&buf, "helloworld");Trait Implementations§
Source§impl<T: Read> Read for MultiReaders<T>
impl<T: Read> Read for MultiReaders<T>
Source§fn read(&mut self, buf: &mut [u8]) -> Result<usize>
fn read(&mut self, buf: &mut [u8]) -> Result<usize>
Pull some bytes from this source into the specified buffer, returning
how many bytes were read. Read more
1.36.0 · Source§fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
Like
read, except that it reads into a slice of buffers. Read moreSource§fn is_read_vectored(&self) -> bool
fn is_read_vectored(&self) -> bool
🔬This is a nightly-only experimental API. (
can_vector)1.0.0 · Source§fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>
fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>
Reads all bytes until EOF in this source, placing them into
buf. Read more1.0.0 · Source§fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
Reads all bytes until EOF in this source, appending them to
buf. Read more1.6.0 · Source§fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
Reads the exact number of bytes required to fill
buf. Read moreSource§fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>
fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>
🔬This is a nightly-only experimental API. (
read_buf)Pull some bytes from this source into the specified buffer. Read more
Source§fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>
fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>
🔬This is a nightly-only experimental API. (
read_buf)Reads the exact number of bytes required to fill
cursor. Read more1.0.0 · Source§fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
Creates a “by reference” adapter for this instance of
Read. Read more1.0.0 · Source§fn chain<R>(self, next: R) -> Chain<Self, R>
fn chain<R>(self, next: R) -> Chain<Self, R>
Creates an adapter which will chain this stream with another. Read more
Source§impl<T: Seek> Seek for MultiReaders<T>
impl<T: Seek> Seek for MultiReaders<T>
Source§fn seek(&mut self, pos: SeekFrom) -> Result<u64>
fn seek(&mut self, pos: SeekFrom) -> Result<u64>
Seek to an offset, in bytes, in a stream. Read more
1.55.0 · Source§fn rewind(&mut self) -> Result<(), Error>
fn rewind(&mut self) -> Result<(), Error>
Rewind to the beginning of a stream. Read more
Source§fn stream_len(&mut self) -> Result<u64, Error>
fn stream_len(&mut self) -> Result<u64, Error>
🔬This is a nightly-only experimental API. (
seek_stream_len)Returns the length of this stream (in bytes). Read more
Auto Trait Implementations§
impl<T> Freeze for MultiReaders<T>
impl<T> RefUnwindSafe for MultiReaders<T>where
T: RefUnwindSafe,
impl<T> Send for MultiReaders<T>where
T: Send,
impl<T> Sync for MultiReaders<T>where
T: Sync,
impl<T> Unpin for MultiReaders<T>where
T: Unpin,
impl<T> UnwindSafe for MultiReaders<T>where
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more