#set #character #range #high #performance

character-set

High performance set.contains(char)

6 releases (3 breaking)

0.4.0 Sep 28, 2022
0.3.0 Sep 28, 2022
0.2.2 Sep 27, 2022
0.1.0 Sep 24, 2022

#930 in Text processing

Download history 9/week @ 2023-12-04 9/week @ 2023-12-11 29/week @ 2023-12-18 11/week @ 2023-12-25 20/week @ 2024-01-08 6/week @ 2024-01-15 3/week @ 2024-01-22 6/week @ 2024-02-05 31/week @ 2024-02-12 27/week @ 2024-02-19 41/week @ 2024-02-26 33/week @ 2024-03-04 31/week @ 2024-03-11 39/week @ 2024-03-18

146 downloads per month
Used in 15 crates (2 directly)

MPL-2.0 license

545KB
9K SLoC

#[test]
fn test_ascii_range() {
    let mut set = CharacterSet::default();
    set.insert('a'..'z');
    set.insert('A'..'Z');
    set.insert('0'..'9');
    set.optimize();
    assert_eq!(set.count(), 62);
    assert!(set.contains('a'));
    assert!(!set.contains(' '));
}

Dependencies

~0.5–1.1MB
~29K SLoC