flatbuffers-retained 0.2.0

This library allows a user to validate a flatbuffer once and the move it around or store it in a data structure without keeping the buffer borrowed. Then later it can be used again without re-validation.
Documentation
extern crate flatbuffers;
extern crate flatbuffers_retained;

mod monster_generated;

pub use monster_generated::my_game::sample::{
    root_as_monster, Color, Equipment, Monster, MonsterArgs, Vec3, Weapon, WeaponArgs,
};

fn main() -> Result<(), flatbuffers::InvalidFlatbuffer> {
    let mut builder = flatbuffers::FlatBufferBuilder::new();
    let orc = Monster::create(
        &mut builder,
        &MonsterArgs {
            pos: Some(&Vec3::new(1.0f32, 2.0f32, 3.0f32)),
            mana: 150,
            hp: 80,
            color: Color::Red,
            ..Default::default()
        },
    );
    builder.finish(orc, None);
    let buf = builder.finished_data().to_vec();
    let monster = flatbuffers_retained::FlatbufferRetained::<Monster>::new(buf)?;

    assert_eq!(monster.get().hp(), 80);
    assert_eq!(monster.get().mana(), 150);
    assert_eq!(monster.get().pos().unwrap().y(), 2.0f32);

    builder.reset();
    let orc2 = Monster::create(
        &mut builder,
        &MonsterArgs {
            pos: Some(&Vec3::new(1.0f32, 2.0f32, 3.0f32)),
            mana: 220,
            hp: 81,
            color: Color::Blue,
            ..Default::default()
        },
    );
    builder.finish_size_prefixed(orc2, None);
    let size_prefixed_buf = builder.finished_data().to_vec();
    let monster2 =
        flatbuffers_retained::SizePrefixedFlatbufferRetained::<Monster>::new(size_prefixed_buf)?;

    let monster2_ptr = monster2.get();
    assert_eq!(monster2_ptr.hp(), 81);

    Ok(())
}