iex 0.2.0

Idiomatic exceptions
Documentation
use anyhow::{anyhow, bail, Result};
use iex::{iex, Context, Outcome};

#[iex]
fn returns_anyhow_error() -> Result<()> {
    bail!(r"¯\_(ツ)_/¯");
}

#[iex]
fn adds_context_to_anyhow_error() -> Result<()> {
    returns_anyhow_error().context("In adds_context_to_anyhow_error()")
}

#[test]
fn iex_matches_result() {
    let expected: Result<()> =
        Err(anyhow!(r"¯\_(ツ)_/¯")).context("In adds_context_to_anyhow_error()");

    assert_eq!(
        format!("{:?}", adds_context_to_anyhow_error().into_result()),
        format!("{:?}", expected),
    );
}

#[test]
fn option_works() {
    let _: Result<()> = None.context("Meow");
}