markab_parser/character_parser/
error.rs1use crate::Error;
2use std::fmt::{
3 Display,
4 Formatter,
5 Result as FmtResult,
6};
7
8#[derive(Debug)]
9pub struct CharacterParserError
10{
11 from: usize,
12 requirement: char,
13 found: Option<char>,
14}
15
16impl CharacterParserError
17{
18 pub fn new(from: usize, requirement: char, found: Option<char>) -> Self
19 {
20 Self {
21 from,
22 requirement,
23 found,
24 }
25 }
26}
27
28impl Error for CharacterParserError
29{
30 fn from(&self, f: &mut Formatter) -> FmtResult
31 {
32 write!(f, "{}", self.from)
33 }
34
35 fn requirement(&self, f: &mut Formatter) -> FmtResult
36 {
37 write!(f, "{:?}", self.requirement)
38 }
39
40 fn result(&self, f: &mut Formatter) -> FmtResult
41 {
42 match self.found
43 {
44 Some(found) => write!(f, "{:?} found", found),
45 None => write!(f, "not found"),
46 }
47 }
48
49 fn causes(&self, _: &mut Formatter, _: usize) -> FmtResult
50 {
51 Ok(())
52 }
53}
54
55impl Display for CharacterParserError
56{
57 fn fmt(&self, f: &mut Formatter) -> FmtResult
58 {
59 self.print(f, 0)
60 }
61}