1use core::fmt;
2
3#[derive(Clone, Copy, Debug, PartialEq, Eq)]
5pub struct InvalidRadix(pub(super) u32);
6
7impl fmt::Display for InvalidRadix {
8 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
9 write!(f, "The radix {} is not in the range 2..=(1 << 16)", self.0)
10 }
11}
12
13#[cfg(feature = "std")]
14impl std::error::Error for InvalidRadix {}
15
16#[derive(Clone, Copy, Debug, PartialEq, Eq)]
18pub enum NumeralStringError {
19 InvalidForRadix(u32),
21 TooLong {
23 ns_len: usize,
25 max_len: usize,
27 },
28 TooShort {
30 ns_len: usize,
32 min_len: usize,
34 },
35}
36
37impl fmt::Display for NumeralStringError {
38 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
39 match self {
40 NumeralStringError::InvalidForRadix(radix) => {
41 write!(f, "The given numeral string is invalid for radix {}", radix)
42 }
43 NumeralStringError::TooLong { ns_len, max_len } => write!(
44 f,
45 "The given numeral string is too long for FF1 ({} > {})",
46 ns_len, max_len,
47 ),
48 NumeralStringError::TooShort { ns_len, min_len } => write!(
49 f,
50 "The given numeral string is too short for FF1 ({} < {})",
51 ns_len, min_len,
52 ),
53 }
54 }
55}
56
57#[cfg(feature = "std")]
58impl std::error::Error for NumeralStringError {}