Skip to main content

token_precedence/
span.rs

1#[derive(Debug, Clone, Copy, Eq, Hash, Ord, PartialEq, PartialOrd)]
2pub struct Span {
3    start: usize,
4    end: usize,
5}
6
7impl Span {
8    #[inline(always)]
9    pub fn new(start: usize, end: usize) -> Self {
10        Self { start, end }
11    }
12
13    #[inline(always)]
14    pub fn from_self_to_other(self, other: Self) -> Self {
15        Self {
16            start: self.start,
17            end: other.end,
18        }
19    }
20}
21
22impl Default for Span {
23    #[inline(always)]
24    fn default() -> Self {
25        Self { start: 0, end: 0 }
26    }
27}
28
29#[derive(Default, Debug, Clone, Copy, Eq, Hash, Ord, PartialEq, PartialOrd)]
30pub struct Spanned<T> {
31    pub inner: T,
32    pub span: Span,
33}
34
35impl<T> Spanned<T> {
36    pub fn default_span(inner: T) -> Self {
37        Self {
38            inner,
39            span: Span::default(),
40        }
41    }
42
43    #[inline(always)]
44    pub fn new(inner: T, span: Span) -> Self {
45        Self { inner, span }
46    }
47}