#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct Span {
pub start_byte: usize,
pub end_byte: usize,
pub style: u32,
}
impl Span {
pub const fn new(start_byte: usize, end_byte: usize, style: u32) -> Self {
Self {
start_byte,
end_byte,
style,
}
}
pub const fn len(self) -> usize {
self.end_byte.saturating_sub(self.start_byte)
}
pub const fn is_empty(self) -> bool {
self.end_byte <= self.start_byte
}
}
#[cfg(test)]
mod tests {
use super::Span;
#[test]
fn len_and_is_empty() {
assert_eq!(Span::new(0, 5, 0).len(), 5);
assert!(Span::new(3, 3, 0).is_empty());
assert!(Span::new(7, 5, 0).is_empty());
}
}