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§
Enums§
- Append
Error - Error returned when appending a reading fails
- Decode
Error - 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