我了解如何使用FlatBufferBuilder
和特定类型的构建器(例如MyNestedTableBuilder
)来获取WIPOffset
,然后使用该获取器来获取finished_data
缓冲区(&[u8]
)。然后,我一直使用get_root
获取基于缓冲区的对象,因此现在有了MyNestedTable
的实例。然后,我需要将其传递给另一个函数,并通过具有字段MyTable
的新生成器add_my_nested_table
创建一个新表实例。如果不解压MyNestedTable
并重新构建它,我将看不到如何执行此操作(这似乎效率很低)。我确信有很好的方法可以做到这一点,即使研究了生成的代码和API后,我还是没有找到它。
通常,我们需要通过网络或通过Rust中的API调用传递对象并重用它们。
[MyNestedTable
并不是真正的对象,它是序列化数据(您的[u8]
)中数据的句柄,并且任何字段访问都在运行中查找此数据。
[FlatBuffers支持的任何语言(包括Rust)的基本API都没有生成允许自动重新序列化的代码,因为在大多数使用情况下,这不是经常使用的操作(您已经拥有序列化的数据)。
方法是通过可选的“对象API”,C ++和某些其他语言都支持,但是not yet in Rust。如您所见,CasperN正在使用这样的API。
直到那时,您可以考虑使用nested_flatbuffer
或其他构造将序列化的数据直接传递到需要的任何地方。