match-string
A Rust library for simple and flexible string pattern matching.

Examples
Simple matches using built-in tokens:
matches!("Hello, World!" => ALPHABETIC, ", ", ALPHABETIC);
matches!("123 456" => NUM, " ", NUM);
matches!("[12, 34, 56]" => "[", NUM[","]+, "]");
matches!("foobarfoofoobar" => ("foo" / "bar")+);
Capturing matched values:
let name: Dest<String> = Dest::new();
let greeting = matches!("Hello, Alice!" => "Hello, ", name@ALPHABETIC, "!");
let arrays: Dest<Vec<usize>> = Dest::new();
let numbers = matches!("[1, 2, 3]" => "[", (arrays@NUM)[","]+, "]");
Custom tokens:
const VOWELS: Token<char, String> = Token {
predicate: |ch| "aeiouAEIOU".contains(*ch),
parser: |v| v.into_iter().collect(),
at_least: 1,
skip_leading: Some(|ch: &char| ch.is_whitespace()),
};