use noa_parser::matcher::{Match, MatchSize};
const TURBOFISH: [char; 4] = [':', ':', '<', '>'];
struct Turbofish;
impl Match<char> for Turbofish {
fn matcher(&self, data: &[char]) -> (bool, usize) {
let pattern = &TURBOFISH;
if data.len() < pattern.len() {
return (false, 0);
}
if &data[..pattern.len()] == pattern {
return (true, pattern.len());
}
(false, 0)
}
}
impl MatchSize for Turbofish {
fn size(&self) -> usize {
TURBOFISH.len()
}
}
fn main() {
let data = [':', ':', '<', '>', 'b'];
let scanner = noa_parser::scanner::Scanner::new(&data);
let result = Turbofish.matcher(&scanner);
println!("{:?}", result);
let data = ['a', ':', ':', '<', '>', 'b'];
let scanner = noa_parser::scanner::Scanner::new(&data);
let result = Turbofish.matcher(&scanner);
println!("{:?}", result); }