Implement Serialize on generated rust types (#7022)
authorMax Burke <max@urbanlogiq.com>
Mon, 31 Jan 2022 00:29:18 +0000 (16:29 -0800)
committerGitHub <noreply@github.com>
Mon, 31 Jan 2022 00:29:18 +0000 (19:29 -0500)
commit1d294a31b8058211fb13bbb6c32c7ed414b6272a
tree5a3454fbff8ef86361a7539005471d296ea205fb
parentdd8fccfb1b7a6102de56e07f4adb4a74c925540e
Implement Serialize on generated rust types (#7022)

* fix for rust build

* Rust: Implement Serialize on generated types

For debugging convenience it is really handy to be able to dump out
types as another format (ie: json). For example, if we are logging a
type to a structured logging system, or even printing it out in a
structured way to the console.

Right now we handle this by shelling out to `flatc` which is not ideal;
by implementing Serialize on the generated types we can use any of the
Serializer-implementing packages for our structured debug output.

* clang-format

* Make the flatbuffers Rust crate only have an optional dependency on the `serde` packages.

* fix warning

* fix rust test build

* Oh yeah this needs to be initialized

* fix toml syntax

* code review feedback

* rebuild test data
67 files changed:
include/flatbuffers/idl.h
rust/flatbuffers/Cargo.toml
rust/flatbuffers/src/array.rs
rust/flatbuffers/src/vector.rs
samples/rust_generated/my_game/sample/monster_generated.rs
samples/rust_generated/my_game/sample/vec_3_generated.rs
samples/rust_generated/my_game/sample/weapon_generated.rs
scripts/generate_code.py
src/flatc.cpp
src/idl_gen_rust.cpp
tests/RustTest.sh
tests/arrays_test/my_game/example/array_struct_generated.rs
tests/arrays_test/my_game/example/array_table_generated.rs
tests/arrays_test/my_game/example/nested_struct_generated.rs
tests/include_test1/my_game/other_name_space/table_b_generated.rs
tests/include_test1/my_game/other_name_space/unused_generated.rs
tests/include_test1/table_a_generated.rs
tests/include_test2/my_game/other_name_space/table_b_generated.rs
tests/include_test2/my_game/other_name_space/unused_generated.rs
tests/include_test2/table_a_generated.rs
tests/keyword_test/keyword_test/keywords_in_table_generated.rs
tests/monster_test/my_game/example/ability_generated.rs
tests/monster_test/my_game/example/monster_generated.rs
tests/monster_test/my_game/example/referrable_generated.rs
tests/monster_test/my_game/example/stat_generated.rs
tests/monster_test/my_game/example/struct_of_structs_generated.rs
tests/monster_test/my_game/example/test_generated.rs
tests/monster_test/my_game/example/test_simple_table_with_enum_generated.rs
tests/monster_test/my_game/example/type_aliases_generated.rs
tests/monster_test/my_game/example/vec_3_generated.rs
tests/monster_test/my_game/example_2/monster_generated.rs
tests/monster_test/my_game/in_parent_namespace_generated.rs
tests/monster_test/my_game/other_name_space/table_b_generated.rs
tests/monster_test/my_game/other_name_space/unused_generated.rs
tests/monster_test/table_a_generated.rs
tests/monster_test_serialize/mod.rs [new file with mode: 0644]
tests/monster_test_serialize/my_game/example/ability_generated.rs [new file with mode: 0644]
tests/monster_test_serialize/my_game/example/any_ambiguous_aliases_generated.rs [new file with mode: 0644]
tests/monster_test_serialize/my_game/example/any_generated.rs [new file with mode: 0644]
tests/monster_test_serialize/my_game/example/any_unique_aliases_generated.rs [new file with mode: 0644]
tests/monster_test_serialize/my_game/example/color_generated.rs [new file with mode: 0644]
tests/monster_test_serialize/my_game/example/monster_generated.rs [new file with mode: 0644]
tests/monster_test_serialize/my_game/example/race_generated.rs [new file with mode: 0644]
tests/monster_test_serialize/my_game/example/referrable_generated.rs [new file with mode: 0644]
tests/monster_test_serialize/my_game/example/stat_generated.rs [new file with mode: 0644]
tests/monster_test_serialize/my_game/example/struct_of_structs_generated.rs [new file with mode: 0644]
tests/monster_test_serialize/my_game/example/test_generated.rs [new file with mode: 0644]
tests/monster_test_serialize/my_game/example/test_simple_table_with_enum_generated.rs [new file with mode: 0644]
tests/monster_test_serialize/my_game/example/type_aliases_generated.rs [new file with mode: 0644]
tests/monster_test_serialize/my_game/example/vec_3_generated.rs [new file with mode: 0644]
tests/monster_test_serialize/my_game/example_2/monster_generated.rs [new file with mode: 0644]
tests/monster_test_serialize/my_game/in_parent_namespace_generated.rs [new file with mode: 0644]
tests/monster_test_serialize/my_game/other_name_space/from_include_generated.rs [new file with mode: 0644]
tests/monster_test_serialize/my_game/other_name_space/table_b_generated.rs [new file with mode: 0644]
tests/monster_test_serialize/my_game/other_name_space/unused_generated.rs [new file with mode: 0644]
tests/monster_test_serialize/table_a_generated.rs [new file with mode: 0644]
tests/more_defaults/more_defaults_generated.rs
tests/namespace_test/namespace_a/namespace_b/struct_in_nested_ns_generated.rs
tests/namespace_test/namespace_a/namespace_b/table_in_nested_ns_generated.rs
tests/namespace_test/namespace_a/second_table_in_a_generated.rs
tests/namespace_test/namespace_a/table_in_first_ns_generated.rs
tests/namespace_test/namespace_c/table_in_c_generated.rs
tests/optional_scalars/optional_scalars/scalar_stuff_generated.rs
tests/rust_serialize_test/Cargo.toml [new file with mode: 0644]
tests/rust_serialize_test/src/main.rs [new file with mode: 0644]
tests/rust_usage_test/Cargo.toml
tests/rust_usage_test/outdir/Cargo.toml