book_building_parse_integer_1/
book_building_parse_integer_1.rs

1fn parse_unsigned_integer(parser: &mut trivet::Parser) -> trivet::errors::ParseResult<u64> {
2    let mut result = String::new();
3    while parser.peek().is_ascii_digit() {
4        result.push(parser.peek());
5        parser.consume();
6    }
7    match result.parse::<u64>() {
8        Ok(number) => Ok(number),
9        Err(err) => Err(trivet::errors::error(parser.loc(), err)),
10    }
11}
12
13fn main() {
14    let mut parser = trivet::parse_from_string("16385");
15    match parse_unsigned_integer(&mut parser) {
16        Ok(value) => println!("{}", value),
17        Err(err) => println!("ERROR: {}", err),
18    }
19}