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