Skip to main content

moxy_token/span/
range.rs

1use crate::Span;
2
3/// A span covering a byte range in a source file.
4#[derive(Debug, Copy, Clone)]
5#[cfg_attr(feature = "serde", derive(serde::Serialize))]
6pub struct RangeSpan {
7    start: Span,
8    end: Span,
9}
10
11impl RangeSpan {
12    #[inline]
13    pub fn new(start: Span, end: Span) -> Self {
14        Self { start, end }
15    }
16
17    #[inline]
18    pub fn start(&self) -> Span {
19        self.start
20    }
21
22    #[inline]
23    pub fn end(&self) -> Span {
24        self.end
25    }
26
27    #[inline]
28    pub fn span(&self) -> Span {
29        self.start.join(self.end)
30    }
31}
32
33impl From<RangeSpan> for Span {
34    #[inline]
35    fn from(value: RangeSpan) -> Self {
36        value.span()
37    }
38}