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}