pub struct FrozenError {
pub module: u8,
pub domain: u8,
pub reason: u8,
pub context: Box<str>,
pub suppressed: Option<Box<Vec<FrozenError>>>,
}Expand description
Utility for error propagation used across frozen_core
Fields§
§module: u88-bit unique identifier to identify the module of FrozenError object
domain: u88-bit unique identifier to identify the domain of FrozenError object
reason: u88-bit unique identifier to identify the reason of FrozenError object
context: Box<str>Error context for the FrozenError
suppressed: Option<Box<Vec<FrozenError>>>Secondary errors that occurred during best-effort cleanup or rollback
Implementations§
Source§impl FrozenError
impl FrozenError
Sourcepub const UNBOUND_MODULE: u8 = 0x00
pub const UNBOUND_MODULE: u8 = 0x00
Sentinel placeholder for an unbound or default module identifier
Sourcepub fn new(module: u8, domain: u8, code: ErrCode, errmsg: &str) -> Self
pub fn new(module: u8, domain: u8, code: ErrCode, errmsg: &str) -> Self
Construct a new FrozenError
§Example
use frozen_core::error::{FrozenError, ErrCode};
let err = FrozenError::new(0x10, 0x20, ErrCode::new(0x30, "io"), "failed to read file");
assert_eq!(err.module, 0x10);
assert_eq!(err.domain, 0x20);
assert_eq!(err.reason, 0x30);
assert!(err.context.contains("[io]"));
assert!(err.context.contains("failed to read file"));Sourcepub fn new_raw<E: Display>(
module: u8,
domain: u8,
code: ErrCode,
err: E,
) -> Self
pub fn new_raw<E: Display>( module: u8, domain: u8, code: ErrCode, err: E, ) -> Self
Construct a new FrozenError from raw error object implementing std::fmt::Display
§Example
use frozen_core::error::{FrozenError, ErrCode};
let io_err = std::io::Error::new(std::io::ErrorKind::NotFound, "file missing");
let err = FrozenError::new_raw(0x14, 0x24, ErrCode::new(0x34, "io"), io_err);
assert_eq!(err.module, 0x14);
assert_eq!(err.domain, 0x24);
assert_eq!(err.reason, 0x34);
assert!(err.context.contains("[io]"));
assert!(err.context.contains("file missing"));Sourcepub fn add_suppressed(&mut self, err: FrozenError)
pub fn add_suppressed(&mut self, err: FrozenError)
Attach a secondary error that occurred during best-effort cleanup or rollback
Sourcepub fn with_suppressed(self, err: FrozenError) -> Self
pub fn with_suppressed(self, err: FrozenError) -> Self
Builder-style helper to attach a suppressed error
Sourcepub fn suppressed(&self) -> &[FrozenError]
pub fn suppressed(&self) -> &[FrozenError]
Returns a slice of suppressed errors attached to this error
Sourcepub fn unbound(domain: u8, code: ErrCode, errmsg: &str) -> Self
pub fn unbound(domain: u8, code: ErrCode, errmsg: &str) -> Self
Construct a FrozenError where module_id is not yet known
§Example
use frozen_core::error::{FrozenError, ErrCode};
let err = FrozenError::unbound(0x08, ErrCode::new(0x10, "inv"), "invalid path");
assert_eq!(err.module, FrozenError::UNBOUND_MODULE);
assert_eq!(err.domain, 0x08);
assert_eq!(err.reason, 0x10);Sourcepub fn unbound_raw<E: Display>(domain: u8, code: ErrCode, err: E) -> Self
pub fn unbound_raw<E: Display>(domain: u8, code: ErrCode, err: E) -> Self
Construct a FrozenError from a raw displayable error where module_id is not yet known
§Example
use frozen_core::error::{FrozenError, ErrCode};
let io_err = std::io::Error::new(std::io::ErrorKind::NotFound, "file missing");
let err = FrozenError::unbound_raw(0x08, ErrCode::new(0x10, "inv"), io_err);
assert_eq!(err.module, FrozenError::UNBOUND_MODULE);
assert_eq!(err.domain, 0x08);
assert_eq!(err.reason, 0x10);Sourcepub fn with_module(self, module: u8) -> Self
pub fn with_module(self, module: u8) -> Self
Recursively stamps or overrides the 8-bit module_id onto this error and all attached
suppressed errors
§Example
use frozen_core::error::{FrozenError, ErrCode};
let err = FrozenError::unbound(0x08, ErrCode::new(0x10, "inv"), "path error").with_module(0x05);
assert_eq!(err.module, 0x05);
assert_eq!(err.domain, 0x08);
assert_eq!(err.reason, 0x10);Trait Implementations§
Source§impl Clone for FrozenError
impl Clone for FrozenError
Source§impl Debug for FrozenError
impl Debug for FrozenError
Source§impl Display for FrozenError
impl Display for FrozenError
Source§impl Error for FrozenError
impl Error for FrozenError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()