y-octo 0.0.3

High-performance and thread-safe CRDT implementation compatible with Yjs
Documentation
use std::io::Error;

use super::*;

#[inline]
pub fn map_write_error(e: Error) -> JwstCodecError {
    JwstCodecError::InvalidWriteBuffer(e.to_string())
}

pub trait CrdtWriter {
    fn write_var_u64(&mut self, num: u64) -> JwstCodecResult;
    fn write_var_i32(&mut self, num: i32) -> JwstCodecResult;
    fn write_var_string<S: AsRef<str>>(&mut self, s: S) -> JwstCodecResult;
    fn write_var_buffer(&mut self, buf: &[u8]) -> JwstCodecResult;
    fn write_u8(&mut self, num: u8) -> JwstCodecResult;
    fn write_f32_be(&mut self, num: f32) -> JwstCodecResult;
    fn write_f64_be(&mut self, num: f64) -> JwstCodecResult;
    fn write_i64_be(&mut self, num: i64) -> JwstCodecResult;

    fn write_info(&mut self, num: u8) -> JwstCodecResult;
    fn write_item_id(&mut self, id: &Id) -> JwstCodecResult;
}

pub trait CrdtWrite<W: CrdtWriter> {
    fn write(&self, writer: &mut W) -> JwstCodecResult
    where
        Self: Sized;
}