Skip to main content

vox_postcard/
encode.rs

1use crate::serialize::Writer;
2
3pub fn write_varint(out: &mut impl Writer, mut value: u64) {
4    while value >= 0x80 {
5        out.write_byte((value as u8) | 0x80);
6        value >>= 7;
7    }
8    out.write_byte(value as u8);
9}
10
11pub fn write_varint_signed(out: &mut impl Writer, value: i64) {
12    let zigzag = ((value << 1) ^ (value >> 63)) as u64;
13    write_varint(out, zigzag);
14}
15
16pub fn write_varint_u128(out: &mut impl Writer, mut value: u128) {
17    while value >= 0x80 {
18        out.write_byte((value as u8) | 0x80);
19        value >>= 7;
20    }
21    out.write_byte(value as u8);
22}
23
24pub fn write_varint_signed_i128(out: &mut impl Writer, value: i128) {
25    let zigzag = ((value << 1) ^ (value >> 127)) as u128;
26    write_varint_u128(out, zigzag);
27}