extern crate std;
use std::{
io::{self, Read},
ops::Deref,
};
use crate::unpacker::Unpacker;
pub struct IoUnpacker<R: Read>(R);
impl<R: Read> IoUnpacker<R> {
pub fn new(reader: R) -> Self {
Self(reader)
}
pub fn into_inner(self) -> R {
self.0
}
}
impl<R: Read> Deref for IoUnpacker<R> {
type Target = R;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<R: Read> Unpacker for IoUnpacker<R> {
type Error = io::Error;
#[inline]
fn unpack_bytes<B: AsMut<[u8]>>(&mut self, mut bytes: B) -> Result<(), Self::Error> {
self.0.read_exact(bytes.as_mut())
}
}