# 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)) ```rust 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.