error-stack 0.2.0

A context-aware error-handling library that supports arbitrary attached user data
Documentation
use core::fmt;

use error_stack::{bail, ensure, report, Context, Result};

#[derive(Debug)]
pub struct RootError;

impl fmt::Display for RootError {
    fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
        fmt.write_str("root error")
    }
}

impl Context for RootError {}

fn invalid_report_arg() -> Result<(), RootError> {
    let _ = report!("Error");

    Ok(())
}

fn empty_report_arg() -> Result<(), RootError> {
    let _ = report!();

    Ok(())
}

fn invalid_bail_arg() -> Result<(), RootError> {
    bail!("Error")
}

fn empty_bail_arg() -> Result<(), RootError> {
    bail!()
}

fn invalid_ensure_error_arg() -> Result<(), RootError> {
    let _ = ensure!(true, "Error");

    Ok(())
}

fn invalid_ensure_condition_arg() -> Result<(), RootError> {
    let _ = ensure!("No boolean", RootError);

    Ok(())
}

fn missing_ensure_arg() -> Result<(), RootError> {
    let _ = ensure!(true);

    Ok(())
}

fn empty_ensure_arg() -> Result<(), RootError> {
    let _ = ensure!();

    Ok(())
}

fn main() {}