error.rs (1578B)
1 use core::fmt; 2 3 #[derive(Debug)] 4 pub enum JobParseError { 5 KindOutOfRange(u32), 6 MissingTag(&'static str), 7 InvalidTag(&'static str), 8 InvalidNumber(&'static str, core::num::ParseIntError), 9 NonWholeSats(&'static str), 10 AmountOverflow(&'static str), 11 MissingChainTag(&'static str), 12 } 13 14 impl fmt::Display for JobParseError { 15 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { 16 match self { 17 JobParseError::KindOutOfRange(kind) => { 18 write!(f, "Nostr event kind {kind} exceeds {}", u16::MAX) 19 } 20 JobParseError::MissingTag(t) => write!(f, "missing tag: {}", t), 21 JobParseError::InvalidTag(t) => write!(f, "invalid tag structure for '{}'", t), 22 JobParseError::InvalidNumber(t, e) => write!(f, "invalid number in '{}': {}", t, e), 23 JobParseError::NonWholeSats(t) => { 24 write!( 25 f, 26 "amount in msats is not a whole number of sats for '{}'", 27 t 28 ) 29 } 30 JobParseError::AmountOverflow(t) => { 31 write!(f, "amount overflow in '{}' (does not fit u32 sat)", t) 32 } 33 JobParseError::MissingChainTag(t) => write!(f, "missing required chain tag: {}", t), 34 } 35 } 36 } 37 38 #[cfg(feature = "std")] 39 impl std::error::Error for JobParseError { 40 fn source(&self) -> Option<&(dyn std::error::Error + 'static)> { 41 match self { 42 JobParseError::InvalidNumber(_, e) => Some(e), 43 _ => None, 44 } 45 } 46 }