Skip to main content

semtree_core/
span.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
4pub struct Span {
5    pub start_byte: usize,
6    pub end_byte: usize,
7    pub start_line: usize,
8    pub end_line: usize,
9}
10
11impl Span {
12    pub fn new(start_byte: usize, end_byte: usize, start_line: usize, end_line: usize) -> Self {
13        Self {
14            start_byte,
15            end_byte,
16            start_line,
17            end_line,
18        }
19    }
20
21    pub fn byte_len(&self) -> usize {
22        self.end_byte - self.start_byte
23    }
24
25    pub fn line_count(&self) -> usize {
26        self.end_line - self.start_line + 1
27    }
28}