Irrefutable

Build Status Build Status Crates Docs License

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

Examples

panic:

```rust

![feature(procmacrohygiene)]

use irrefutable::irrefutable;

[irrefutable(panic("The cause."))]

let Some((a, b)) = Some(("a", "b")); ```

expands to:

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

return:

```rust

![feature(procmacrohygiene)]

use irrefutable::irrefutable;

[irrefutable(return)]

let Some((a, b)) = Some(("a", "b")); ```

expands to:

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

unreachable:

```rust

![feature(procmacrohygiene)]

use irrefutable::irrefutable;

[irrefutable(unreachable)]

let Some((a, b)) = Some(("a", "b")); ```

expands to:

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