1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#[cfg(feature = "serialize")]
use serde::Serialize;

/// Span represents a range of a piece of source code.
/// It counts by offset, so it's 0-based.
#[derive(Clone, Debug, Hash, PartialEq, Eq)]
#[cfg_attr(feature = "serialize", derive(Serialize))]
pub struct Span {
    /// Start offset. (Inclusive)
    pub start: usize,
    /// End offset. (Exclusive)
    pub end: usize,
}

pub trait Spanned {
    fn span(&self) -> &Span;
}