assert_let_bind 0.1.0

A convenience macro for writing pattern-matching tests
Documentation
# assert_let_bind

A convenience macro for writing pattern-matching tests in the Rust programming language.

The `assert_let` macro tests whether a value matches a given pattern, binding the pattern in the current scope if the match succeeds and causing a panic if the match fails.

(Strongly inspired by [assert_matches](https://github.com/murarth/assert_matches))

```
use assert_let_bind::assert_let;

#[derive(Debug)]
enum Foo {
    A(i32, i32),
    B(i32),
}

let foo = Foo::A(3000, 2000);

assert_let!(Foo::A(x, y), foo);
assert_eq!(x + y, 5000);
```

Generally speaking, `assert_let(pattern, expr)` is roughly equivalent to:

```rust
let pattern = expr else { panic!("some panic message with {} {}", pattern, expr)};
```

## Usage

This macro relies on `let else`, and thus only compiles in nightly Rust for now.

To add it to your project:

```rust
cargo add assert_let_bind
```

To add it only to your tests:

```rust
cargo add --dev assert_let_bind
```


## License

This code is distributed under the terms of the MIT license. See LICENSE file for details.


## Contributing

Contributions are unnecessary because this crate is already perfect.

In the unlikely eventuality that it isn't, issues and pull requests welcome.