Skip to main content

slk_tokenstream/
span.rs

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}