1use core::fmt;
2use std::error::Error;
3use std::num::{ParseFloatError, ParseIntError};
4use std::str::ParseBoolError;
5use std::string::FromUtf8Error;
6
7#[derive(Debug)]
8#[non_exhaustive]
9pub enum ParseError {
10 InsufficientData,
11 InvalidEvent,
12 ConversionFailed,
13}
14
15impl Error for ParseError {}
16
17impl fmt::Display for ParseError {
18 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
19 match self {
20 ParseError::InsufficientData => {
21 write!(f, "Insufficient data was provided")
22 }
23 ParseError::InvalidEvent => {
24 write!(f, "Event of different type was provided")
25 }
26 ParseError::ConversionFailed => {
27 write!(f, "Conversion failed")
28 }
29 }
30 }
31}
32
33impl From<ParseIntError> for ParseError {
34 fn from(_error: ParseIntError) -> ParseError {
35 ParseError::ConversionFailed
36 }
37}
38
39impl From<ParseBoolError> for ParseError {
40 fn from(_error: ParseBoolError) -> ParseError {
41 ParseError::ConversionFailed
42 }
43}
44
45impl From<ParseFloatError> for ParseError {
46 fn from(_error: ParseFloatError) -> ParseError {
47 ParseError::ConversionFailed
48 }
49}
50
51impl From<serde_json::Error> for ParseError {
52 fn from(_error: serde_json::Error) -> ParseError {
53 ParseError::ConversionFailed
54 }
55}
56
57impl From<strum::ParseError> for ParseError {
58 fn from(_error: strum::ParseError) -> ParseError {
59 ParseError::ConversionFailed
60 }
61}
62
63impl From<FromUtf8Error> for ParseError {
64 fn from(_error: FromUtf8Error) -> ParseError {
65 ParseError::ConversionFailed
66 }
67}