#string #bytes #ascii #search #simd

jetscii

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

9 releases

0.4.4 Jun 10, 2019
0.4.3 Aug 26, 2018
0.4.2 Jul 11, 2018
0.4.0 May 13, 2018
0.1.0 May 8, 2015

#4 in #ascii

Download history 3/week @ 2019-03-30 11/week @ 2019-04-06 8/week @ 2019-04-13 10/week @ 2019-04-20 3/week @ 2019-04-27 9/week @ 2019-05-04 12/week @ 2019-05-11 28/week @ 2019-05-18 29/week @ 2019-05-25 20/week @ 2019-06-01 34/week @ 2019-06-08 25/week @ 2019-06-15 110/week @ 2019-06-22 25/week @ 2019-06-29 76/week @ 2019-07-06

71 downloads per month
Used in 5 crates

MIT/Apache

55KB
1K SLoC

Jetscii

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

Build Status 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