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