Parser combinators in Rust