json_spanned_value/
error_ext.rs1pub trait ErrorExt {
3 fn offset_within(&self, text: &str) -> Option<usize>;
6}
7
8impl ErrorExt for serde_json::Error {
9 fn offset_within(&self, text: &str) -> Option<usize> {
10 let mut remaining = text;
11 for _ in 1..self.line() {
12 match remaining.find('\n') {
13 None => return None,
14 Some(n) => remaining = &remaining[(n+1)..],
15 };
16 }
17
18 let n = (text.len() - remaining.len()).checked_add(self.column().saturating_sub(1))?;
19 return if n < text.len() { Some(n) } else { None };
20 }
21}