Back to Rerun

Custom collection adapter

examples/cpp/custom_collection_adapter/README.md

0.31.41.9 KB
Original Source

Custom collection adapter

Especially when dealing with large amounts of data, it can be both slow and inconvenient to convert your data into the components & datatypes provided by the Rerun SDK in order to log it.

This example demonstrates how to solve this using rerun::ComponentAdapter for your own types: Whenever you have data that is continuous in memory and binary compatible with an existing Rerun component, you can adapt it to map to the respective Rerun component. For non-temporary objects that live until rerun::RecordingStream::log returns, it is typically safe to do so with a zero-copy "borrow". This means that in those cases rerun::Collection will merely store a pointer and a length to your data.

While collection adapters are primarily used with components, they are also useful for all other usages of Rerun's collection type. E.g. the backing buffer of rerun::TensorData is also a rerun::Collection allowing you to ingest large amounts of data without a copy and the convenience custom adapters can provide.

To build it from a checkout of the repository (requires a Rust toolchain):

bash
cmake .
cmake --build . --target example_custom_collection_adapter
./examples/cpp/minimal/example_custom_collection_adapter

  • 🚧 TODO(#4257): In the future, adapters will be able to provide simple data transformations like strides to be done as a borrow.
  • 🚧 TODO(#3977): We plan to provide adapters for common types from Eigen and OpenCV.