error.rs (1890B)
1 use alloc::string::String; 2 use thiserror::Error; 3 4 #[derive(Debug, Error)] 5 pub enum NetError { 6 #[error("{0}")] 7 Msg(String), 8 9 #[error("mutex lock poisoned")] 10 Poisoned, 11 12 #[cfg(feature = "std")] 13 #[error("I/O error: {0}")] 14 Io(#[from] std::io::Error), 15 16 #[error("missing key")] 17 MissingKey, 18 19 #[error("invalid hex32")] 20 InvalidHex32, 21 22 #[error("invalid bech32")] 23 InvalidBech32, 24 25 #[error("invalid key file")] 26 InvalidKeyFile, 27 28 #[error("key I/O")] 29 KeyIo, 30 31 #[error("overwrite denied")] 32 OverwriteDenied, 33 34 #[error("persistence path required")] 35 PersistencePathRequired, 36 37 #[error("persistence unsupported")] 38 PersistenceUnsupported, 39 40 #[error("logging init failed: {0}")] 41 LoggingInit(&'static str), 42 } 43 44 impl NetError { 45 pub fn msg<M: Into<String>>(msg: M) -> Self { 46 NetError::Msg(msg.into()) 47 } 48 } 49 50 impl Clone for NetError { 51 fn clone(&self) -> Self { 52 match self { 53 NetError::Msg(m) => NetError::Msg(m.clone()), 54 NetError::Poisoned => NetError::Poisoned, 55 #[cfg(feature = "std")] 56 NetError::Io(_) => { 57 panic!("cannot clone std::io::Error"); 58 } 59 NetError::MissingKey => NetError::MissingKey, 60 NetError::InvalidHex32 => NetError::InvalidHex32, 61 NetError::InvalidBech32 => NetError::InvalidBech32, 62 NetError::InvalidKeyFile => NetError::InvalidKeyFile, 63 NetError::KeyIo => NetError::KeyIo, 64 NetError::OverwriteDenied => NetError::OverwriteDenied, 65 NetError::PersistencePathRequired => NetError::PersistencePathRequired, 66 NetError::PersistenceUnsupported => NetError::PersistenceUnsupported, 67 NetError::LoggingInit(s) => NetError::LoggingInit(s), 68 } 69 } 70 } 71 72 pub type Result<T> = core::result::Result<T, NetError>;