vox-postcard 0.4.0

Postcard serialization for vox with translation plan support
Documentation
use crate::serialize::Writer;

pub fn write_varint(out: &mut impl Writer, mut value: u64) {
    while value >= 0x80 {
        out.write_byte((value as u8) | 0x80);
        value >>= 7;
    }
    out.write_byte(value as u8);
}

pub fn write_varint_signed(out: &mut impl Writer, value: i64) {
    let zigzag = ((value << 1) ^ (value >> 63)) as u64;
    write_varint(out, zigzag);
}

pub fn write_varint_u128(out: &mut impl Writer, mut value: u128) {
    while value >= 0x80 {
        out.write_byte((value as u8) | 0x80);
        value >>= 7;
    }
    out.write_byte(value as u8);
}

pub fn write_varint_signed_i128(out: &mut impl Writer, value: i128) {
    let zigzag = ((value << 1) ^ (value >> 127)) as u128;
    write_varint_u128(out, zigzag);
}