extern crate std;
use std::{
io::{self, Write},
ops::Deref,
};
use crate::packer::Packer;
pub struct IoPacker<W: Write>(W);
impl<W: Write> IoPacker<W> {
pub fn new(writer: W) -> Self {
Self(writer)
}
pub fn into_inner(self) -> W {
self.0
}
}
impl<W: Write> Deref for IoPacker<W> {
type Target = W;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<W: Write> Packer for IoPacker<W> {
type Error = io::Error;
#[inline]
fn pack_bytes<B: AsRef<[u8]>>(&mut self, bytes: B) -> Result<(), Self::Error> {
self.0.write_all(bytes.as_ref())
}
}