1#[derive(Debug)]
5pub struct IntegerOffsetError(pub(crate) IntegerOffsetErrorImpl);
6
7#[derive(Debug)]
10pub(crate) enum IntegerOffsetErrorImpl {
11 Conversion(isize),
13 Sub(usize, usize),
15 InvalidNonZero,
17}
18
19#[cfg(not(feature = "no_std"))]
20impl std::error::Error for IntegerOffsetError {}
21
22mod fmt {
23 use super::*;
24 use std::fmt;
25
26 impl fmt::Display for IntegerOffsetError {
27 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
28 match self.0 {
29 IntegerOffsetErrorImpl::Conversion(del) => write!(
30 f,
31 "Offset could not be stored (offset of {} is too large)",
32 del
33 ),
34 IntegerOffsetErrorImpl::Sub(a, b) => {
35 write!(f, "Difference is beween {} and {} overflows `isize`", a, b)
36 }
37
38 IntegerOffsetErrorImpl::InvalidNonZero => {
39 write!(
40 f,
41 "Difference was zero when a `NonZero*` type was specified"
42 )
43 }
44 }
45 }
46 }
47}