hypotaxis 0.1.0

Uninterrupted method chaining
Documentation
  • Coverage
  • 88.89%
    8 out of 9 items documented8 out of 9 items with examples
  • Size
  • Source code size: 16.41 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 821.63 kB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 11s Average build duration of successful builds.
  • all releases: 11s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • fantacell/hypotaxis
    0 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • fantacell

Write

use hypotaxis::ChainLink;

let finalized_data = raw_data
    .to_vec()
    .r#if(NEW_DATA_VALID, |original_data|
        [original_data, new_raw_data.to_vec()].concat()
    )
    .mutated(|data| data
        .sort_by(|a, b| a.1.total_cmp(&b.1))
    )
    .tap(|data| {
        assert!( data.iter()
            .all(|(_, probability)| (0.0..=1.0).contains(probability))
        )
    })
    .into_iter()
    .filter(|(_point, probability)| *probability > 0.0)
    .collect::<Vec<_>>()
    .apply(|data|
        ProbabilityMap { data }
    )
;

instead of

let full_raw_data = if NEW_DATA_VALID {
    [raw_data.to_vec(), new_raw_data.to_vec()].concat()
} else {
    raw_data.to_vec()
};

let mut sorted = full_raw_data;
sorted.sort_by(|a, b| a.1.total_cmp(&b.1));

assert!( sorted.iter()
    .all(|(_, probability)| (0.0..=1.0).contains(probability))
);

let finalized_data = ProbabilityMap {
    data: sorted
        .into_iter()
        .filter(|(_point, probability)| *probability > 0.0)
        .collect::<Vec<_>>()
};

Can make the builder pattern more concise.