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}