reproto_core/
span.rs

1#[derive(Clone, Copy, Debug, Serialize, PartialEq, Eq, PartialOrd, Ord, Hash)]
2pub struct Span {
3    pub start: usize,
4    pub end: usize,
5}
6
7impl Span {
8    /// Build an empty span.
9    pub fn empty() -> Span {
10        Span { start: 0, end: 0 }
11    }
12
13    /// Convert the span to include only the end of itself.
14    pub fn end(self) -> Span {
15        Self {
16            start: self.end,
17            end: self.end,
18        }
19    }
20}
21
22impl<'a> From<&'a Span> for Span {
23    fn from(value: &'a Span) -> Span {
24        Span {
25            start: value.start,
26            end: value.end,
27        }
28    }
29}
30
31impl From<(usize, usize)> for Span {
32    fn from(value: (usize, usize)) -> Self {
33        Span {
34            start: value.0,
35            end: value.1,
36        }
37    }
38}