1use std::io::{Read, Result, Seek, SeekFrom};
2
3pub(crate) enum RefMut<'a, R> {
4 Borrowed(&'a mut R),
5 Owned(Box<R>),
6}
7
8impl<'a, R> Read for RefMut<'a, R>
9where
10 R: Read,
11{
12 fn read(&mut self, buf: &mut [u8]) -> Result<usize> {
13 match self {
14 RefMut::Borrowed(r) => r.read(buf),
15 RefMut::Owned(r) => r.read(buf),
16 }
17 }
18}
19
20impl<'a, R> Seek for RefMut<'a, R>
21where
22 R: Seek,
23{
24 fn seek(&mut self, pos: SeekFrom) -> Result<u64> {
25 match self {
26 RefMut::Borrowed(r) => r.seek(pos),
27 RefMut::Owned(r) => r.seek(pos),
28 }
29 }
30}