use super::{write::Writer, Encoder};
use crate::{config::Config, utils::Sealed};
pub struct EncoderImpl<W: Writer, C: Config> {
writer: W,
config: C,
}
impl<W: Writer, C: Config> EncoderImpl<W, C> {
pub const fn new(writer: W, config: C) -> EncoderImpl<W, C> {
EncoderImpl { writer, config }
}
#[inline]
pub fn into_writer(self) -> W {
self.writer
}
}
impl<W: Writer, C: Config> Encoder for EncoderImpl<W, C> {
type W = W;
type C = C;
#[inline]
fn writer(&mut self) -> &mut Self::W {
&mut self.writer
}
#[inline]
fn config(&self) -> &Self::C {
&self.config
}
}
impl<W: Writer, C: Config> Sealed for EncoderImpl<W, C> {}