1use crate::Span;
2
3#[derive(Debug, Copy, Clone)]
5#[cfg_attr(feature = "serde", derive(serde::Serialize))]
6pub struct DelimSpan {
7 open: Span,
8 close: Span,
9}
10
11impl Default for DelimSpan {
12 fn default() -> Self {
13 Self::new(Span::call_site(), Span::call_site())
14 }
15}
16
17impl PartialEq for DelimSpan {
20 fn eq(&self, _: &Self) -> bool {
21 true
22 }
23}
24
25impl Eq for DelimSpan {}
26
27impl std::hash::Hash for DelimSpan {
28 fn hash<H: std::hash::Hasher>(&self, _: &mut H) {}
29}
30
31impl DelimSpan {
32 #[inline]
33 pub fn new(open: Span, close: Span) -> Self {
34 Self { open, close }
35 }
36
37 #[inline]
38 pub fn open(&self) -> Span {
39 self.open
40 }
41
42 #[inline]
43 pub fn close(&self) -> Span {
44 self.close
45 }
46
47 #[inline]
48 pub fn span(&self) -> Span {
49 self.open.join(self.close)
50 }
51}
52
53impl From<DelimSpan> for Span {
54 #[inline]
55 fn from(value: DelimSpan) -> Self {
56 value.span()
57 }
58}