#collation #bisect #stream #bisection #order #structure #data-structures

collate

Traits and a data structure to support collation and bisection

19 releases

0.4.2 Aug 13, 2024
0.4.1 Dec 20, 2023
0.4.0 Nov 6, 2023
0.3.0 Jul 3, 2023
0.1.1 Jan 18, 2021

#288 in Rust patterns

Download history 70/week @ 2024-07-14 71/week @ 2024-07-21 126/week @ 2024-07-28 41/week @ 2024-08-04 226/week @ 2024-08-11 49/week @ 2024-08-18 72/week @ 2024-08-25 67/week @ 2024-09-01 47/week @ 2024-09-08 41/week @ 2024-09-15 58/week @ 2024-09-22 63/week @ 2024-09-29 145/week @ 2024-10-06 357/week @ 2024-10-13 462/week @ 2024-10-20 505/week @ 2024-10-27

1,480 downloads per month
Used in 21 crates (9 directly)

Apache-2.0

36KB
807 lines

collate

Rust collation utilities

Example usage:

use collate::*;

let collator = Collator::default();
let collection = [
    [1, 2, 3],
    [2, 3, 4],
    [3, 4, 5],
];

assert_eq!(collator.bisect_left(&collection, &[1]), 0);
assert_eq!(collator.bisect_right(&collection, &[1]), 1);

lib.rs:

Defines a Collate trait to standardize collation methods across data types. The provided Collator struct can be used to collate a collection of items of type T where T: Ord.

Collate is useful for implementing a B-Tree, or to handle cases where a collator type is more efficient than calling Ord::cmp repeatedly, for example when collating localized strings using rust_icu_ucol. It's also useful to handle types like complex numbers which do not necessarily have a natural ordering.

Use the "stream" feature flag to enable diff and try_diff functions to compute the difference between two collated Streams, and the merge and try_merge functions to merge two collated Streams.

Dependencies

~0–255KB