Macro gramma::define_string_pattern

source ·
macro_rules! define_string_pattern {
    { $(
        $vis:vis fn $Name:ident (
            $($arg:tt $($arg1:ident)* $(: $Arg:ty)?),* $(,)?
        ) $body:block
    )* } => { ... };
}
Expand description
define_string_pattern!(
    fn identifier(max_len: impl Into<Option<u32>>) {
        !precedes(ascii_digit())
            + word().repeat(1..=max_len.into().unwrap_or(u32::MAX)).simple()
            + word_boundary()
    }
);

assert_eq!(string_matcher!(identifier(4)).match_string(0, "foo"), Some(0..3));
assert_eq!(string_matcher!(identifier(4)).match_string(0, "foobar"), None);
assert_eq!(string_matcher!(identifier(None)).match_string(0, "foobarbaz"), Some(0..9));