1 use std::{error, fmt}; 2 3 /// An enumeration of buffer creation errors 4 #[derive(Debug, Clone, Copy)] 5 #[non_exhaustive] 6 pub enum Error { 7 /// No choices were provided to the Unstructured::choose call 8 EmptyChoose, 9 /// There was not enough underlying data to fulfill some request for raw 10 /// bytes. 11 NotEnoughData, 12 /// The input bytes were not of the right format 13 IncorrectFormat, 14 } 15 16 impl fmt::Display for Error { fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result17 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { 18 match self { 19 Error::EmptyChoose => write!( 20 f, 21 "`arbitrary::Unstructured::choose` must be given a non-empty set of choices" 22 ), 23 Error::NotEnoughData => write!( 24 f, 25 "There is not enough underlying raw data to construct an `Arbitrary` instance" 26 ), 27 Error::IncorrectFormat => write!( 28 f, 29 "The raw data is not of the correct format to construct this type" 30 ), 31 } 32 } 33 } 34 35 impl error::Error for Error {} 36 37 /// A `Result` with the error type fixed as `arbitrary::Error`. 38 /// 39 /// Either an `Ok(T)` or `Err(arbitrary::Error)`. 40 pub type Result<T> = std::result::Result<T, Error>; 41