collab-common 0.0.7

Code shared by collab's client and server
Documentation
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)
}

/// TODO: docs
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 }
    }
}

/// TODO: docs
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 }
    }
}