Crate rerun

source ·
Expand description

Rerun - log point clouds, images, etc and visualize them effortlessly

Add the rerun library to your crate with cargo add rerun.

There is also a rerun binary. The binary is required in order to stream log data over the networks, and to open our .rrd data files. If you need it, install the rerun binary with cargo install rerun-cli.

Feature flags

  • analytics (enabled by default) — Enable telemetry using our analytics SDK.

  • demo (enabled by default) — Demo helpers for examples.

  • glam (enabled by default) — Add support for some math operations using glam. Only relevant if feature sdk is enabled.

  • image (enabled by default) — Integration with the image crate.

  • native_viewer — Support spawning a native viewer. This adds a lot of extra dependencies, so only enable this feature if you need it!

  • server (enabled by default) — Support for running a TCP server that listens to incoming log messages from a Rerun SDK.

  • sdk (enabled by default) — Embed the Rerun SDK and re-export all of its public symbols.

  • web_viewer — Support serving a web viewer over HTTP.

    Enabling this inflates the binary size quite a bit, since it embeds the viewer wasm.

There are many different ways of sending data to the Rerun Viewer depending on what you’re trying to achieve and whether the viewer is running in the same process as your code, in another process, or even as a separate web application.

Checkout SDK Operating Modes for an overview of what’s possible and how.

If you get stuck on anything, open an issue at https://github.com/rerun-io/rerun/issues. You can also ask questions on the Rerun Discord.

Using the rerun library

Logging
let rec_stream = rerun::RecordingStreamBuilder::new("my_app").buffered()?;

let points: Vec<rerun::components::Point3D> = positions();
let colors: Vec<rerun::components::ColorRGBA> = colors();
let image: image::DynamicImage = capture_image();

rerun::MsgSender::new("points")
    .with_component(&points)?
    .with_component(&colors)?
    .send(&rec_stream)?;

rerun::MsgSender::new("image")
    .with_component(&[rerun::components::Tensor::from_image(image)?])?
    .send(&rec_stream)?;

See RecordingStream and MsgSender for details.

Streaming

To stream log data to an awaiting rerun process, you can do this: Start rerun in a terminal by just running rerun.

Then do this:

let rec_stream = rerun::RecordingStreamBuilder::new("my_app").connect(rerun::default_server_addr());
Buffering

let (rec_stream, storage) = rerun::RecordingStreamBuilder::new("my_app").memory()?;
log_using(&rec_stream);
rerun::native_viewer::show(storage.take());

Binary

The rerun binary is required in order to stream log data over the networks, and to open our .rrd data files.

The binary can act either as a server, a viewer, or both, depending on which options you use when you start it.

cargo install rerun
rerun --help

Modules

Structs

Enums

Traits

Functions