voxj-codec 0.1.1

Encodes voxj types into .voxj / .voxjz documents.
Documentation
/// Encodes unsigned integers as an unsigned-LEB128 varint byte stream.
pub fn encode_varint(values: &[u64]) -> Vec<u8> {
    let mut out = Vec::new();
    for &value in values {
        let mut v = value;
        while v >= 0x80 {
            out.push((v as u8 & 0x7f) | 0x80);
            v >>= 7;
        }
        out.push(v as u8);
    }
    out
}

#[cfg(test)]
mod tests {
    use crate::encode_varint;

    #[test]
    fn matches_spec_example() {
        // Deltas [0, 3, 1, 3] from the format spec's Hilbert example.
        assert_eq!(encode_varint(&[0, 3, 1, 3]), vec![0x00, 0x03, 0x01, 0x03]);
    }
}