markab_parser/character_parser/
error.rs

1use 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}