char-classes 0.4.0

Simple matching of one char or byte, similar to regex
Documentation

Simple matching of one char or byte, similar to regex

Lightweight and easy to use, and can work conveniently on u8 and Option

Examples

use char_classes::functions::any;

assert!(any("ab",       'a'));
assert!(any("ab",       'b'));
assert!(any("a-c",      'a'));
assert!(any("a-c",      'b'));
assert!(any("a-ce-f",   'e'));
assert!(any("a-ce-",    '-'));
assert!(any("a-ce-",    'e'));
assert!(any("a-c",      Some('b')));
assert!(any("a-c",      ['b', 'd']));
assert!(any("a-c",      "bd"));

assert!(! any("a-c",    '-'));
assert!(! any("a-ce-",  'f'));

assert!(! any("a-c",    None::<char>));
assert!(! any("a-c",    ['d', 'b']));
assert!(! any("a-c",    "db"));

Match byte:

use char_classes::functions::any;

assert!(any(b"ab",      b'a'));
assert!(any(b"ab",      b'b'));
assert!(any(b"ab",      b"bd"));

assert!(! any(b"ab",     b'c'));
assert!(! any(b"ab",     b"db"));

Using macros for better performance:

use char_classes::any;

assert!(any!(b"ab",      b'a'));
assert!(any!(b"ab",      b'b'));
assert!(any!(b"ab",      b"bd"));

assert!(any!(^b"ab",     b'c'));
assert!(any!(^b"ab",     b"db"));

Using macros inside match pattern:

use char_classes::any;

if let Some(any!(@"a-z_")) = Some('c') {}
if let Some('a'..='z' | '_') = Some('c') {} // expand to

if let Some(any!(@b"a-z_")) = Some(b'c') {}
if let Some(b'a'..=b'z' | b'_') = Some(b'c') {} // expand to