[−][src]Struct concat_reader::read::ConcatReader
The ConcatReader
struct allows to read from multiple readers in a sequential order.
If the current reader reaches its EOF
the ConcatReader
will start reading from the next
reader in the iterator. If all readers reached EOF
the ConcatReader
will also be EOF
.
Examples
use concat_reader::*; use std::fs::File; use std::io; use std::io::prelude::*; fn main() -> io::Result<()> { let foo = File::open("foo.txt")?; let bar = File::open("bar.txt")?; let baz = File::open("bar.txt")?; let files = [foo, bar, baz]; let mut c = ConcatReader::new(&files); let mut buffer = [0; 10]; // read up to 10 bytes let n = c.read(&mut buffer[..])?; println!("The bytes: {:?}", &buffer[..n]); //skip to the next file c.skip(); let mut buffer = Vec::new(); // read all rest files into a single buffer c.read_to_end(&mut buffer)?; Ok(()) }
Methods
impl<I> ConcatReader<I> where
I: IntoIterator,
I::Item: Read,
[src]
I: IntoIterator,
I::Item: Read,
pub fn new(iter: I) -> Self
[src]
Creates a new ConcatReader
from an value which can be converted into an Iterator<Item=Read>
.
use std::io::prelude::*; use concat_reader::{ConcatRead, ConcatReader}; let bytes = vec!["first".as_bytes(), "second".as_bytes()]; let r = ConcatReader::new(bytes);
Trait Implementations
impl<I> ConcatRead for ConcatReader<I> where
I: IntoIterator,
I::Item: Read,
[src]
I: IntoIterator,
I::Item: Read,
impl<I> From<I> for ConcatReader<I> where
I: IntoIterator,
I::Item: Read,
[src]
I: IntoIterator,
I::Item: Read,
ⓘImportant traits for ConcatReader<I>fn from(iter: I) -> ConcatReader<I>
[src]
impl<I> Debug for ConcatReader<I> where
I: IntoIterator,
I::Item: Debug,
I::IntoIter: Clone,
[src]
I: IntoIterator,
I::Item: Debug,
I::IntoIter: Clone,
impl<I> Read for ConcatReader<I> where
I: IntoIterator,
I::Item: Read,
[src]
I: IntoIterator,
I::Item: Read,
fn read(&mut self, buf: &mut [u8]) -> Result<usize>
[src]
fn read_vectored(&mut self, bufs: &mut [IoSliceMut]) -> Result<usize, Error>
1.36.0[src]
Like read
, except that it reads into a slice of buffers. Read more
unsafe fn initializer(&self) -> Initializer
[src]
read_initializer
)Determines if this Read
er can work with buffers of uninitialized memory. Read more
fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>
1.0.0[src]
Read all bytes until EOF in this source, placing them into buf
. Read more
fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
1.0.0[src]
Read all bytes until EOF in this source, appending them to buf
. Read more
fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
1.6.0[src]
Read the exact number of bytes required to fill buf
. Read more
fn by_ref(&mut self) -> &mut Self
1.0.0[src]
Creates a "by reference" adaptor for this instance of Read
. Read more
fn bytes(self) -> Bytes<Self>
1.0.0[src]
Transforms this Read
instance to an [Iterator
] over its bytes. Read more
fn chain<R>(self, next: R) -> Chain<Self, R> where
R: Read,
1.0.0[src]
R: Read,
Creates an adaptor which will chain this stream with another. Read more
fn take(self, limit: u64) -> Take<Self>
1.0.0[src]
Creates an adaptor which will read at most limit
bytes from it. Read more
Auto Trait Implementations
impl<I> Sync for ConcatReader<I> where
<I as IntoIterator>::IntoIter: Sync,
<I as IntoIterator>::Item: Sync,
<I as IntoIterator>::IntoIter: Sync,
<I as IntoIterator>::Item: Sync,
impl<I> Unpin for ConcatReader<I> where
<I as IntoIterator>::IntoIter: Unpin,
<I as IntoIterator>::Item: Unpin,
<I as IntoIterator>::IntoIter: Unpin,
<I as IntoIterator>::Item: Unpin,
impl<I> Send for ConcatReader<I> where
<I as IntoIterator>::IntoIter: Send,
<I as IntoIterator>::Item: Send,
<I as IntoIterator>::IntoIter: Send,
<I as IntoIterator>::Item: Send,
impl<I> UnwindSafe for ConcatReader<I> where
<I as IntoIterator>::IntoIter: UnwindSafe,
<I as IntoIterator>::Item: UnwindSafe,
<I as IntoIterator>::IntoIter: UnwindSafe,
<I as IntoIterator>::Item: UnwindSafe,
impl<I> RefUnwindSafe for ConcatReader<I> where
<I as IntoIterator>::IntoIter: RefUnwindSafe,
<I as IntoIterator>::Item: RefUnwindSafe,
<I as IntoIterator>::IntoIter: RefUnwindSafe,
<I as IntoIterator>::Item: RefUnwindSafe,
Blanket Implementations
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> From<T> for T
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,