multi_readers/_impl/
read.rs

1use crate::MultiReaders;
2
3use std::io::Read;
4
5impl<T: Read> Read for MultiReaders<T> {
6    fn read(&mut self, buf: &mut [u8]) -> std::io::Result<usize> {
7        if self.inner.len() == self.pos {
8            return Ok(0);
9        }
10        let len = self.inner[self.pos].read(buf)?;
11        if len < buf.len() {
12            self.pos += 1;
13            Ok(len + self.read(&mut buf[len..])?)
14        } else {
15            Ok(len)
16        }
17    }
18}