Macro combine::struct_parser
[−]
[src]
macro_rules! struct_parser { ($name: ident { $($tt: tt)* }) => { ... }; }
Sequences multiple parsers and builds a struct out of them.
#[macro_use] extern crate combine; use combine::{Parser, many, token}; use combine::byte::{letter, spaces}; #[derive(Debug, PartialEq)] struct Field { name: Vec<u8>, value: Vec<u8>, } fn main() { let mut parser = struct_parser!{ Field { name: many(letter()), // `_` fields are ignored when building the struct _: spaces(), _: token(b':'), _: spaces(), value: many(letter()), } }; assert_eq!( parser.parse(&b"test: data"[..]), Ok((Field { name: b"test"[..].to_owned(), value: b"data"[..].to_owned() }, &b""[..])) ); }