Skip to main content

number/
number.rs

1use elyze::bytes::matchers::match_number;
2use elyze::matcher::Match;
3use elyze::recognizer::Recognizable;
4
5struct TokenNumber;
6
7/// Implement the `Match` trait for the token number.
8impl Match<u8> for TokenNumber {
9    fn is_matching(&self, data: &[u8]) -> (bool, usize) {
10        match_number(data)
11    }
12
13    fn size(&self) -> usize {
14        0
15    }
16}
17
18fn main() {
19    let data = b"123abc";
20    let mut scanner = elyze::scanner::Scanner::new(data);
21    let result = TokenNumber.recognize_slice(&mut scanner);
22    println!("{:?}", result); // Ok(Some([49, 50, 51]))
23    // If the result is successful
24    if let Ok(Some(data)) = result {
25        // Convert the data to a string
26        let str_data = std::str::from_utf8(data).unwrap();
27        // Convert the string to a number
28        let result = str_data.parse::<usize>().unwrap();
29        println!("{}", result); // 123
30    }
31}