[][src]Struct concat_reader::read::ConcatReader

pub struct ConcatReader<I: IntoIterator> { /* fields omitted */ }

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]

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]

type Item = I::Item

impl<I> From<I> for ConcatReader<I> where
    I: IntoIterator,
    I::Item: Read
[src]

impl<I> Debug for ConcatReader<I> where
    I: IntoIterator,
    I::Item: Debug,
    I::IntoIter: Clone
[src]

impl<I> Read for ConcatReader<I> where
    I: IntoIterator,
    I::Item: Read
[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]

🔬 This is a nightly-only experimental API. (read_initializer)

Determines if this Reader 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 Self1.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]

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> Unpin for ConcatReader<I> where
    <I as IntoIterator>::IntoIter: Unpin,
    <I as IntoIterator>::Item: Unpin

impl<I> Sync for ConcatReader<I> where
    <I as IntoIterator>::IntoIter: Sync,
    <I as IntoIterator>::Item: Sync

impl<I> Send for ConcatReader<I> where
    <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

impl<I> RefUnwindSafe for ConcatReader<I> where
    <I as IntoIterator>::IntoIter: RefUnwindSafe,
    <I as IntoIterator>::Item: RefUnwindSafe

Blanket Implementations

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]