iex 0.2.0

Idiomatic exceptions
Documentation
use iex::{iex, Outcome};

fn result_divide(a: u32, b: u32) -> Result<u32, &'static str> {
    if b == 0 {
        Err("Cannot divide by zero")
    } else {
        Ok(a / b)
    }
}

#[iex]
fn checked_divide(a: u32, b: u32) -> Result<u32, &'static str> {
    if b == 0 {
        Err("Cannot divide by zero")
    } else {
        Ok(a / b)
    }
}

#[iex]
fn invoke_failing_operation() -> Result<u32, String> {
    result_divide(6, 0)?;
    result_divide(5, 123)?;
    checked_divide(7, 0)?;
    Ok(checked_divide(5, 123)?)
}

#[test]
fn simple_propagation() {
    assert_eq!(
        invoke_failing_operation().into_result().unwrap_err(),
        "Cannot divide by zero",
    );
}