chapter-tgz 0.1.0

Specially crafted .tar.gz with embedded chapter boundary information
Documentation
use std::io::{Read, Result, Seek, SeekFrom};

pub(crate) enum RefMut<'a, R> {
    Borrowed(&'a mut R),
    Owned(Box<R>),
}

impl<'a, R> Read for RefMut<'a, R>
where
    R: Read,
{
    fn read(&mut self, buf: &mut [u8]) -> Result<usize> {
        match self {
            RefMut::Borrowed(r) => r.read(buf),
            RefMut::Owned(r) => r.read(buf),
        }
    }
}

impl<'a, R> Seek for RefMut<'a, R>
where
    R: Seek,
{
    fn seek(&mut self, pos: SeekFrom) -> Result<u64> {
        match self {
            RefMut::Borrowed(r) => r.seek(pos),
            RefMut::Owned(r) => r.seek(pos),
        }
    }
}