1use core::marker::PhantomData;
2
3use crate::Mark;
4
5
6
7pub struct TokenstreamSpan<'a> {
8 start: Mark<'a>,
9 end: Mark<'a>,
10 _lifetime: PhantomData<&'a ()>
11}
12
13impl<'a> TokenstreamSpan<'a> {
14 pub fn new(mut start: Mark<'a>, mut end: Mark<'a>) -> Self {
15 if start.position() > end.position() {
16 core::mem::swap(&mut start, &mut end);
17 }
18 Self { start, end, _lifetime: PhantomData }
19 }
20 pub fn start(&self) -> Mark<'a> {
21 self.start
22 }
23 pub fn end(&self) -> Mark<'a> {
24 self.end
25 }
26}