#string #bytes #ascii #search #simd

jetscii

A tiny library to efficiently search strings and byte slices for sets of ASCII characters or bytes

13 releases

Uses old Rust 2015

0.5.3 Jul 7, 2022
0.5.1 Sep 18, 2021
0.5.0 May 6, 2021
0.4.4 Jun 10, 2019
0.3.1 Jul 29, 2015

#133 in Text processing

Download history 977/week @ 2022-06-11 1196/week @ 2022-06-18 1037/week @ 2022-06-25 1265/week @ 2022-07-02 1050/week @ 2022-07-09 1773/week @ 2022-07-16 1534/week @ 2022-07-23 1622/week @ 2022-07-30 1381/week @ 2022-08-06 1345/week @ 2022-08-13 1037/week @ 2022-08-20 1085/week @ 2022-08-27 977/week @ 2022-09-03 978/week @ 2022-09-10 1051/week @ 2022-09-17 919/week @ 2022-09-24

4,121 downloads per month
Used in 31 crates (11 directly)

MIT/Apache

56KB
1.5K SLoC

Jetscii

A tiny library to efficiently search strings for sets of ASCII characters or byte slices for sets of bytes.

Current Version Documentation

Examples

Searching for a set of ASCII characters

#[macro_use]
extern crate jetscii;

fn main() {
    let part_number = "86-J52:rev1";
    let first = ascii_chars!('-', ':').find(part_number);
    assert_eq!(first, Some(2));
}

Searching for a set of bytes

#[macro_use]
extern crate jetscii;

fn main() {
    let raw_data = [0x00, 0x01, 0x10, 0xFF, 0x42];
    let first = bytes!(0x01, 0x10).find(&raw_data);
    assert_eq!(first, Some(1));
}

Check out the documentation for information about feature flags and benchmarks.

Contributing

  1. Fork it (https://github.com/shepmaster/jetscii/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Add a failing test.
  4. Add code to pass the test.
  5. Commit your changes (git commit -am 'Add some feature')
  6. Ensure tests pass.
  7. Push to the branch (git push origin my-new-feature)
  8. Create a new Pull Request

No runtime deps