solidhunter_lib/types/
range.rs1use super::Position;
2use serde::{Deserialize, Serialize};
3
4#[derive(Clone, Serialize, Deserialize, Debug)]
5pub struct Range {
6 pub start: Position,
7 pub end: Position,
8}
9
10impl Range {
11 pub fn compute_length(&self, content: &str) -> usize {
13 if self.start.line == self.end.line {
14 self.end.character - self.start.character
15 } else {
16 let mut length = 0;
17 let mut line = self.start.line;
18 let mut character = self.start.character;
19 while line < self.end.line {
20 let line_content = content.lines().nth(line - 1).unwrap();
21 length += line_content.len() + 1 - character;
22 line += 1;
23 character = 0;
24 }
25 length += self.end.character - character;
26 length
27 }
28 }
29}