irrefutable 0.1.3

Procedural macro to convert a refutable let expression to an irrefutable.
Documentation

Irrefutable

Build Status Build Status Crates Docs License

Procedural macro to convert a refutable let expression to an irrefutable.

Examples

panic:

#![feature(proc_macro_hygiene)]

use irrefutable::irrefutable;

#[irrefutable(panic("The cause."))]
let Some((a, b)) = Some(("a", "b"));

expands to:

let (a, b) = if let Some((a, b)) = Some(("a", "b")) {
    (a, b)
} else {
    panic!("The cause.");
};

return:

#![feature(proc_macro_hygiene)]

use irrefutable::irrefutable;

#[irrefutable(return)]
let Some((a, b)) = Some(("a", "b"));

expands to:

let (a, b) = if let Some((a, b)) = Some(("a", "b")) {
    (a, b)
} else {
    return;
};

unreachable:

#![feature(proc_macro_hygiene)]

use irrefutable::irrefutable;

#[irrefutable(unreachable)]
let Some((a, b)) = Some(("a", "b"));

expands to:

let (a, b) = if let Some((a, b)) = Some(("a", "b")) {
    (a, b)
} else {
    unreachable!();
};