multi-readers 0.6.0

Combining multiple readers
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use crate::MultiReaders;

use std::io::Read;

impl<T: Read> Read for MultiReaders<T> {
    fn read(&mut self, buf: &mut [u8]) -> std::io::Result<usize> {
        if self.inner.len() == self.pos {
            return Ok(0);
        }
        let len = self.inner[self.pos].read(buf)?;
        if len < buf.len() {
            self.pos += 1;
            Ok(len + self.read(&mut buf[len..])?)
        } else {
            Ok(len)
        }
    }
}