use std::io;
#[inline(always)]
pub(crate) fn compress_from(
value: &[u8],
buf: &mut Vec<u8>,
) -> Result<(), CompressError> {
zstd::stream::copy_encode(value, buf, 0).map_err(Into::into)
}
#[inline(always)]
pub(crate) fn decompress_into(
value: &[u8],
buf: &mut Vec<u8>,
) -> Result<(), DecompressError> {
zstd::stream::copy_decode(value, buf).map_err(Into::into)
}
pub struct CompressError {
inner: io::Error,
}
impl core::fmt::Debug for CompressError {
#[inline]
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
self.inner.fmt(f)
}
}
impl core::fmt::Display for CompressError {
#[inline]
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
self.inner.fmt(f)
}
}
impl std::error::Error for CompressError {}
impl From<io::Error> for CompressError {
#[inline]
fn from(inner: io::Error) -> Self {
Self { inner }
}
}
pub struct DecompressError {
inner: io::Error,
}
impl core::fmt::Debug for DecompressError {
#[inline]
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
self.inner.fmt(f)
}
}
impl core::fmt::Display for DecompressError {
#[inline]
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
self.inner.fmt(f)
}
}
impl std::error::Error for DecompressError {}
impl From<io::Error> for DecompressError {
#[inline]
fn from(inner: io::Error) -> Self {
Self { inner }
}
}