use crate::decoder::{
buffer::DecoderBuffer,
value::{DecoderParameterizedValueMut, DecoderValueMut},
DecoderError,
};
pub type DecoderBufferMutResult<'a, T> = Result<(T, DecoderBufferMut<'a>), DecoderError>;
#[derive(Debug, Eq, PartialEq, PartialOrd, Ord, Hash)]
pub struct DecoderBufferMut<'a> {
bytes: &'a mut [u8],
}
impl<'a> DecoderBufferMut<'a> {
#[inline]
pub fn new(bytes: &'a mut [u8]) -> Self {
Self { bytes }
}
#[inline]
pub fn freeze(self) -> DecoderBuffer<'a> {
DecoderBuffer::new(self.bytes)
}
#[inline]
pub fn into_less_safe_slice(self) -> &'a mut [u8] {
self.bytes
}
#[inline]
pub fn as_less_safe_slice_mut(&'a mut self) -> &'a mut [u8] {
self.bytes
}
}
impl_buffer!(
DecoderBufferMut,
DecoderBufferMutResult,
DecoderValueMut,
decode_mut,
DecoderParameterizedValueMut,
decode_parameterized_mut,
split_at_mut
);
impl<'a> From<DecoderBufferMut<'a>> for DecoderBuffer<'a> {
fn from(b: DecoderBufferMut<'a>) -> Self {
b.freeze()
}
}