time_series_data_packer_rs 0.4.1

Time series data packer written in Rust language for data intensive IoT and IIoT projects.
Documentation
use crate::TSPackedSamples;
use crate::TSSamples;

pub fn similar_values_pack(samples: &[TSSamples]) -> Vec<TSPackedSamples> {
    if samples.is_empty() {
        return Vec::new();
    }

    let mut result: Vec<TSPackedSamples> = Vec::new();

    let mut run_start_ts = samples[0].0;
    let mut prev_ts = samples[0].0;
    let mut current_value = samples[0].1;

    for &(ts, val) in &samples[1..] {
        if val == current_value {
            prev_ts = ts;
        } else {
            result.push(((run_start_ts, prev_ts), current_value));
            run_start_ts = ts;
            prev_ts = ts;
            current_value = val;
        }
    }

    result.push(((run_start_ts, prev_ts), current_value));

    result
}