book_building_parse_integer_1/
book_building_parse_integer_1.rs1fn 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}