base/onescomplement/
error.rs1use std::error::Error;
4use std::fmt::{self, Debug, Display, Formatter};
5
6#[derive(Clone, Copy, Debug, PartialEq, Eq)]
9pub enum ConversionFailed {
10 TooLarge,
12 TooSmall,
13}
14
15#[derive(Clone, Copy, Debug, PartialEq, Eq)]
16pub enum StringConversionFailed {
17 Range(ConversionFailed),
18 EmptyInput,
19 NotOctal(char),
20}
21
22impl Error for ConversionFailed {}
23
24impl Display for ConversionFailed {
25 fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), fmt::Error> {
26 match self {
27 ConversionFailed::TooLarge => f.write_str("value is too large"),
28 ConversionFailed::TooSmall => f.write_str("value is too small"),
29 }
30 }
31}
32
33impl Display for StringConversionFailed {
34 fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), fmt::Error> {
35 match self {
36 StringConversionFailed::Range(e) => std::fmt::Display::fmt(&e, f),
37 StringConversionFailed::NotOctal(ch) => {
38 write!(f, "value contains a non-octal digit {ch}")
39 }
40 StringConversionFailed::EmptyInput => {
41 f.write_str("an empty string is not a valid number")
42 }
43 }
44 }
45}