Crate nibblerun

Crate nibblerun 

Source
Expand description

NibbleRun - High-performance time series compression for slow-changing data

A bit-packed compression format optimized for sensor data that changes gradually, such as temperature, humidity, or similar environmental readings.

§Example

use nibblerun::Encoder;

let mut encoder: Encoder<i32> = Encoder::new();
let base_ts = 1_761_000_000_u32;

encoder.append(base_ts, 22).unwrap();
encoder.append(base_ts + 300, 22).unwrap();
encoder.append(base_ts + 600, 23).unwrap();

// Decode from encoder
let readings = encoder.decode().unwrap();
for r in &readings {
    println!("ts={}, value={}", r.ts, r.value);
}

// Freeze for storage and decode later
let frozen = encoder.freeze();
let readings = nibblerun::decode_frozen::<i32, 300>(&frozen).unwrap();

§Two Serialization Formats

NibbleRun provides two formats:

  • Appendable format (to_bytes() / from_bytes()): Preserves internal state, allowing you to continue appending readings after deserialization.

  • Frozen format (freeze() / decode_frozen()): Compact read-only format for long-term storage. Cannot be restored to an encoder.

Modules§

constants
Internal constants and helper functions for nibblerun encoding.

Structs§

Encoder
Encoder for NibbleRun format
Reading
A decoded sensor reading

Enums§

AppendError
Error returned when appending a reading fails
DecodeError
Error returned when decoding fails

Traits§

Value
Trait for values that can be encoded by Encoder.

Functions§

decode_frozen
Decode frozen format bytes back to readings