ziyy_core/scanner/
source.rs

1pub trait Source<T: PartialEq> {
2    fn null(&self) -> T;
3    fn nl(&self) -> T;
4    fn len(&self) -> usize;
5    fn at(&self, i: usize) -> T;
6}
7
8impl Source<char> for Vec<char> {
9    fn null(&self) -> char {
10        '\0'
11    }
12
13    fn nl(&self) -> char {
14        '\n'
15    }
16
17    fn len(&self) -> usize {
18        self.as_slice().len()
19    }
20
21    fn at(&self, i: usize) -> char {
22        self[i]
23    }
24}
25
26impl Source<u8> for Vec<u8> {
27    fn null(&self) -> u8 {
28        b'\0'
29    }
30
31    fn nl(&self) -> u8 {
32        b'\n'
33    }
34
35    fn len(&self) -> usize {
36        self.as_slice().len()
37    }
38
39    fn at(&self, i: usize) -> u8 {
40        self[i]
41    }
42}