1use crate::Span;
2
3#[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}