use crate::prelude::*; /// Consume tokens into a new parser while the concrete /// parser returns something. Stop consuming if it returns /// `None`. pub struct CollectWhile(Op); impl ConcreteSubparser for CollectWhile where Op: ConcreteParser { fn subparse (value: ::Input, parser: &mut Parser) -> Parser where Op: concrete_parser::ContainerCp { let op = Op::new(value); let mut tokens = Tokens::new_empty(); loop { if let Some(token) = op.try_next_token(parser) { tokens.add_token(token); } else { break; } } Parser::new(tokens) } }