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),
}
}
}