basic/
basic.rs

1extern crate flatbuffers;
2extern crate flatbuffers_retained;
3
4mod monster_generated;
5
6pub use monster_generated::my_game::sample::{
7    root_as_monster, Color, Equipment, Monster, MonsterArgs, Vec3, Weapon, WeaponArgs,
8};
9
10fn main() -> Result<(), flatbuffers::InvalidFlatbuffer> {
11    let mut builder = flatbuffers::FlatBufferBuilder::new();
12    let orc = Monster::create(
13        &mut builder,
14        &MonsterArgs {
15            pos: Some(&Vec3::new(1.0f32, 2.0f32, 3.0f32)),
16            mana: 150,
17            hp: 80,
18            color: Color::Red,
19            ..Default::default()
20        },
21    );
22    builder.finish(orc, None);
23    let buf = builder.finished_data().to_vec();
24    let monster = flatbuffers_retained::FlatbufferRetained::<Monster>::new(buf)?;
25
26    assert_eq!(monster.get().hp(), 80);
27    assert_eq!(monster.get().mana(), 150);
28    assert_eq!(monster.get().pos().unwrap().y(), 2.0f32);
29
30    builder.reset();
31    let orc2 = Monster::create(
32        &mut builder,
33        &MonsterArgs {
34            pos: Some(&Vec3::new(1.0f32, 2.0f32, 3.0f32)),
35            mana: 220,
36            hp: 81,
37            color: Color::Blue,
38            ..Default::default()
39        },
40    );
41    builder.finish_size_prefixed(orc2, None);
42    let size_prefixed_buf = builder.finished_data().to_vec();
43    let monster2 =
44        flatbuffers_retained::SizePrefixedFlatbufferRetained::<Monster>::new(size_prefixed_buf)?;
45
46    let monster2_ptr = monster2.get();
47    assert_eq!(monster2_ptr.hp(), 81);
48
49    Ok(())
50}