diff --git a/src/asn1_types/oid.rs b/src/asn1_types/oid.rs index a119348..9a5f340 100644 --- a/src/asn1_types/oid.rs +++ b/src/asn1_types/oid.rs @@ -9,16 +9,20 @@ use alloc::vec::Vec; use core::{ convert::TryFrom, fmt, iter::FusedIterator, marker::PhantomData, ops::Shl, str::FromStr, }; +use displaydoc::Display; use num_traits::Num; /// An error for OID parsing functions. -#[derive(Debug)] +#[derive(Debug, Display)] +#[cfg_attr(feature = "std", derive(thiserror::Error))] pub enum OidParseError { + /// Non-relative OIDs must be at least 2 components long and relative OIDs must not be empty TooShort, - /// Signalizes that the first or second component is too large. - /// The first must be within the range 0 to 6 (inclusive). - /// The second component must be less than 40. + + /// The first OID component must be < 7 and the second must be < 40 FirstComponentsTooLarge, + + /// OID component is not an integer ParseIntError, } @@ -31,7 +35,6 @@ pub enum OidParseError { /// create oids. For example `oid!(1.2.44.233)` or `oid!(rel 44.233)` /// for relative oids. See the [module documentation](index.html) for more information. #[derive(Hash, PartialEq, Eq, Clone)] - pub struct Oid<'a> { asn1: Cow<'a, [u8]>, relative: bool,