dm_database_parser_sqllog/
error.rs1use std::error::Error;
2use std::fmt;
3use std::num::{ParseFloatError, ParseIntError};
4
5#[derive(Debug)]
14pub enum ParseError {
15 MissingFields(usize),
16 Int(ParseIntError),
17 Float(ParseFloatError),
18 InvalidFormat,
19}
20
21impl fmt::Display for ParseError {
22 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
27 match self {
28 ParseError::MissingFields(n) => write!(f, "missing fields: expected {} fields", n),
29 ParseError::Int(e) => write!(f, "int parse error: {}", e),
30 ParseError::Float(e) => write!(f, "float parse error: {}", e),
31 ParseError::InvalidFormat => write!(f, "invalid format"),
32 }
33 }
34}
35
36impl Error for ParseError {
37 fn source(&self) -> Option<&(dyn Error + 'static)> {
40 match self {
41 ParseError::Int(e) => Some(e),
42 ParseError::Float(e) => Some(e),
43 _ => None,
44 }
45 }
46}
47
48impl From<ParseIntError> for ParseError {
53 fn from(e: ParseIntError) -> Self {
54 ParseError::Int(e)
55 }
56}
57
58impl From<ParseFloatError> for ParseError {
59 fn from(e: ParseFloatError) -> Self {
60 ParseError::Float(e)
61 }
62}