Documentation
use anyhow::Result;
use data_rw::Data;
use data_rw::DataReader;

fn main()->Result<()> {
    let mut data = Data::new();
    data.write_fixed(&1i32);
    data.write_fixed(&2i64);
    data.write_fixed(&3f64);
    data.write_var_integer(&123u32);
    data.write_var_integer(&321i32);
    data.write_var_integer(&123u64);
    data.write_var_integer(&321i64);
    data.write_var_integer(&"hello world");


    let mut data = DataReader::from(&data[..]);
    let x: i32 = data.read_fixed()?;
    assert_eq!(1, x);
    let x: i64 = data.read_fixed()?;
    assert_eq!(2, x);
    let x: f64 = data.read_fixed()?;
    assert_eq!(3f64, x);
    let x: u32 = data.read_var_integer()?;
    assert_eq!(123, x);
    let x: i32 = data.read_var_integer()?;
    assert_eq!(321, x);
    let x: u64 = data.read_var_integer()?;
    assert_eq!(123, x);
    let x: i64 = data.read_var_integer()?;
    assert_eq!(321, x);
    let msg = data.read_var_str()?;
    assert_eq!(msg, "hello world");

    Ok(())
}