DisplayMode

Enum DisplayMode 

Source
pub enum DisplayMode {
    Prod = 0,
    Local = 1,
    Staging = 2,
}
Expand description

Display mode for error output.

Controls the structure and verbosity of error messages based on the deployment environment. The mode is determined by the MASTERROR_ENV environment variable or auto-detected based on build configuration and runtime environment.

§Examples

use masterror::DisplayMode;

let mode = DisplayMode::current();
match mode {
    DisplayMode::Prod => println!("Production mode: JSON output"),
    DisplayMode::Local => println!("Local mode: Human-readable output"),
    DisplayMode::Staging => println!("Staging mode: JSON with context")
}

Variants§

§

Prod = 0

Production mode: lightweight JSON, minimal fields, no sensitive data.

Output includes only: kind, code, message (if not redacted). Metadata is filtered to exclude sensitive fields. Source chain and backtrace are excluded.

§Example Output

{"kind":"NotFound","code":"NOT_FOUND","message":"User not found"}
§

Local = 1

Development mode: human-readable, full context.

Output includes: error details, full source chain, complete metadata, and backtrace (if enabled). Supports colored output when the colored feature is enabled and output is a TTY.

§Example Output

Error: NotFound
Code: NOT_FOUND
Message: User not found

  Caused by: database query failed
  Caused by: connection timeout

Context:
  user_id: 12345
§

Staging = 2

Staging mode: JSON with additional context.

Output includes: kind, code, message, limited source_chain, and filtered metadata. No backtrace.

§Example Output

{"kind":"NotFound","code":"NOT_FOUND","message":"User not found","source_chain":["database error"],"metadata":{"user_id":12345}}

Implementations§

Source§

impl DisplayMode

Source

pub fn current() -> Self

Returns the current display mode based on environment configuration.

The mode is determined by checking (in order):

  1. MASTERROR_ENV environment variable (prod, local, or staging)
  2. Kubernetes environment detection (KUBERNETES_SERVICE_HOST)
  3. Build configuration (cfg!(debug_assertions))

The result is cached for performance.

§Examples
use masterror::DisplayMode;

let mode = DisplayMode::current();
assert!(matches!(
    mode,
    DisplayMode::Prod | DisplayMode::Local | DisplayMode::Staging
));

Trait Implementations§

Source§

impl Clone for DisplayMode

Source§

fn clone(&self) -> DisplayMode

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for DisplayMode

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for DisplayMode

Source§

fn eq(&self, other: &DisplayMode) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for DisplayMode

Source§

impl Eq for DisplayMode

Source§

impl StructuralPartialEq for DisplayMode

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.