read_collection 0.1.5

A collection of different variants of the `std::io::Read` trait.
Documentation
use crate::{BufReadBack, ReadBack};

mod empty;
mod file;
mod u8_slice;

impl<R: ReadBack> ReadBack for &mut R {
    fn read_back(&mut self, buf: &mut [u8]) -> std::io::Result<usize> {
        (**self).read_back(buf)
    }

    fn read_back_vectored(
        &mut self,
        bufs: &mut [std::io::IoSliceMut<'_>],
    ) -> std::io::Result<usize> {
        (**self).read_back_vectored(bufs)
    }

    fn read_back_to_end(&mut self, buf: &mut Vec<u8>) -> std::io::Result<usize> {
        (**self).read_back_to_end(buf)
    }

    fn read_back_to_string(&mut self, buf: &mut String) -> std::io::Result<usize> {
        (**self).read_back_to_string(buf)
    }

    fn read_back_exact(&mut self, buf: &mut [u8]) -> std::io::Result<()> {
        (**self).read_back_exact(buf)
    }
}

impl<R: ReadBack> ReadBack for Box<R> {
    fn read_back(&mut self, buf: &mut [u8]) -> std::io::Result<usize> {
        (**self).read_back(buf)
    }

    fn read_back_vectored(
        &mut self,
        bufs: &mut [std::io::IoSliceMut<'_>],
    ) -> std::io::Result<usize> {
        (**self).read_back_vectored(bufs)
    }

    fn read_back_to_end(&mut self, buf: &mut Vec<u8>) -> std::io::Result<usize> {
        (**self).read_back_to_end(buf)
    }

    fn read_back_to_string(&mut self, buf: &mut String) -> std::io::Result<usize> {
        (**self).read_back_to_string(buf)
    }

    fn read_back_exact(&mut self, buf: &mut [u8]) -> std::io::Result<()> {
        (**self).read_back_exact(buf)
    }
}

impl<R: BufReadBack> BufReadBack for &mut R {
    fn read_back_fill_buf(&mut self) -> std::io::Result<&[u8]> {
        (**self).read_back_fill_buf()
    }

    fn read_back_consume(&mut self, amt: usize) {
        (**self).read_back_consume(amt)
    }

    fn read_back_has_data_left(&mut self) -> std::io::Result<bool> {
        (**self).read_back_has_data_left()
    }

    fn read_back_until(&mut self, delim: u8, buf: &mut Vec<u8>) -> std::io::Result<usize> {
        (**self).read_back_until(delim, buf)
    }

    fn read_back_skip_until(&mut self, delim: u8) -> std::io::Result<usize> {
        (**self).read_back_skip_until(delim)
    }

    fn read_back_line(&mut self, dest: &mut String) -> std::io::Result<usize> {
        (**self).read_back_line(dest)
    }
}

impl<R: BufReadBack> BufReadBack for Box<R> {
    fn read_back_fill_buf(&mut self) -> std::io::Result<&[u8]> {
        (**self).read_back_fill_buf()
    }

    fn read_back_consume(&mut self, amt: usize) {
        (**self).read_back_consume(amt)
    }

    fn read_back_has_data_left(&mut self) -> std::io::Result<bool> {
        (**self).read_back_has_data_left()
    }

    fn read_back_until(&mut self, delim: u8, buf: &mut Vec<u8>) -> std::io::Result<usize> {
        (**self).read_back_until(delim, buf)
    }

    fn read_back_skip_until(&mut self, delim: u8) -> std::io::Result<usize> {
        (**self).read_back_skip_until(delim)
    }

    fn read_back_line(&mut self, dest: &mut String) -> std::io::Result<usize> {
        (**self).read_back_line(dest)
    }
}