kahon 0.6.1

A Rust writer for the Kahon binary format.
Documentation
use kahon::Writer;

fn main() {
    let mut buf: Vec<u8> = Vec::new();
    {
        let w = Writer::new(&mut buf);
        let mut monster = w.start_object();
        monster.push_i64("hp", 80).unwrap();
        monster.push_i64("mana", 200).unwrap();
        monster.push_bool("enraged", true).unwrap();

        {
            let mut weapons = monster.start_array("weapons").unwrap();
            weapons.push_str("fist").unwrap();

            {
                let mut axe = weapons.start_object();
                axe.push_str("name", "great axe").unwrap();
                axe.push_i64("damage", 15).unwrap();
                // auto-close on drop
            }

            {
                let mut hammer = weapons.start_object();
                hammer.push_str("name", "hammer").unwrap();
                hammer.push_i64("damage", 5).unwrap();
            }
            // auto-close weapons
        }

        {
            let mut coins = monster.start_array("coins").unwrap();
            for c in [5i64, 10, 25, 25, 25, 100] {
                coins.push_i64(c).unwrap();
            }
        }

        {
            let mut position = monster.start_array("position").unwrap();
            for _ in 0..3 {
                position.push_f64(0.0).unwrap();
            }
        }

        let w = monster.end().unwrap();
        w.finish().unwrap();
    }

    println!("monster serialized in {} bytes", buf.len());
}