whitepaces/
whitepaces.rs

1use noa_parser::bytes::primitives::string::DataString;
2use noa_parser::bytes::primitives::whitespace::Whitespaces;
3use noa_parser::errors::ParseResult;
4use noa_parser::scanner::Scanner;
5use noa_parser::visitor::Visitor;
6
7#[derive(Debug)]
8#[allow(dead_code)]
9struct Data<'a>(&'a str);
10
11impl<'a> Visitor<'a, u8> for Data<'a> {
12    fn accept(scanner: &mut Scanner<'a, u8>) -> ParseResult<Self> {
13        // consume whitespaces
14        Whitespaces::accept(scanner)?;
15        // before parse string
16        let raw_data = DataString::accept(scanner)?.0;
17        Ok(Data(raw_data))
18    }
19}
20
21fn main() {
22    let data = b"     data    ";
23    let mut scanner = Scanner::new(data);
24    let result = Data::accept(&mut scanner);
25    println!("{:?}", result); // Ok(Data("data"))
26}