如何将平面缓冲区对象添加到新对象?
How to add a flatbuffer object to a new object?
我了解如何使用 FlatBufferBuilder
和特定类型构建器(例如 MyNestedTableBuilder
)获取 WIPOffset
,然后使用它获取 finished_data
缓冲区(&[u8]
)。然后我一直在使用 get_root
来获取基于缓冲区的对象,所以现在我有一个 MyNestedTable
的实例。然后我需要将它传递给另一个函数并通过一个新的构建器 MyTable
创建一个新的 table 实例,该实例具有字段 add_my_nested_table
。如果不解压 MyNestedTable
并再次重建它(这看起来效率很低),我看不出如何做到这一点。我确信有一个很好的方法来做到这一点,我只是没有找到它,即使在研究了生成的代码和 API.
通常我们需要通过网络或通过 Rust 中的 API 调用传递对象并重用它们。
MyNestedTable
并不是一个真正的对象,它是序列化数据(您的 [u8]
)中数据的句柄,任何字段访问都会即时查找此数据。
任何 FlatBuffers 支持的语言(包括 Rust)的 None 的基础 APIs 都生成了允许自动重新序列化的代码,因为这在大多数情况下不是一个频繁的操作案例(您已经拥有序列化数据)。
方法是通过可选的 "object API",在 C++ 和其他一些语言中受支持,但 not yet in Rust。如您所见,CasperN 正在研究这样一个 API.
在那之前,您可以考虑使用 nested_flatbuffer
或其他一些构造将序列化数据直接传递到需要去的地方。
我了解如何使用 FlatBufferBuilder
和特定类型构建器(例如 MyNestedTableBuilder
)获取 WIPOffset
,然后使用它获取 finished_data
缓冲区(&[u8]
)。然后我一直在使用 get_root
来获取基于缓冲区的对象,所以现在我有一个 MyNestedTable
的实例。然后我需要将它传递给另一个函数并通过一个新的构建器 MyTable
创建一个新的 table 实例,该实例具有字段 add_my_nested_table
。如果不解压 MyNestedTable
并再次重建它(这看起来效率很低),我看不出如何做到这一点。我确信有一个很好的方法来做到这一点,我只是没有找到它,即使在研究了生成的代码和 API.
通常我们需要通过网络或通过 Rust 中的 API 调用传递对象并重用它们。
MyNestedTable
并不是一个真正的对象,它是序列化数据(您的 [u8]
)中数据的句柄,任何字段访问都会即时查找此数据。
None 的基础 APIs 都生成了允许自动重新序列化的代码,因为这在大多数情况下不是一个频繁的操作案例(您已经拥有序列化数据)。
方法是通过可选的 "object API",在 C++ 和其他一些语言中受支持,但 not yet in Rust。如您所见,CasperN 正在研究这样一个 API.
在那之前,您可以考虑使用 nested_flatbuffer
或其他一些构造将序列化数据直接传递到需要去的地方。