如何将平面缓冲区对象添加到新对象?

问题描述 投票:0回答:1

我了解如何使用FlatBufferBuilder和特定类型的构建器(例如MyNestedTableBuilder)来获取WIPOffset,然后使用该获取器来获取finished_data缓冲区(&[u8])。然后,我一直使用get_root获取基于缓冲区的对象,因此现在有了MyNestedTable的实例。然后,我需要将其传递给另一个函数,并通过具有字段MyTable的新生成器add_my_nested_table创建一个新表实例。如果不解压MyNestedTable并重新构建它,我将看不到如何执行此操作(这似乎效率很低)。我确信有很好的方法可以做到这一点,即使研究了生成的代码和API后,我还是没有找到它。

通常,我们需要通过网络或通过Rust中的API调用传递对象并重用它们。

rust flatbuffers
1个回答
1
投票

[MyNestedTable并不是真正的对象,它是序列化数据(您的[u8])中数据的句柄,并且任何字段访问都在运行中查找此数据。

[FlatBuffers支持的任何语言(包括Rust)的基本API都没有生成允许自动重新序列化的代码,因为在大多数使用情况下,这不是经常使用的操作(您已经拥有序列化的数据)。

方法是通过可选的“对象API”,C ++和某些其他语言都支持,但是not yet in Rust。如您所见,CasperN正在使用这样的API。

直到那时,您可以考虑使用nested_flatbuffer或其他构造将序列化的数据直接传递到需要的任何地方。

© www.soinside.com 2019 - 2024. All rights reserved.