matches2 1.2.1

A macro to evaluate, as a boolean, whether an expression matches a pattern.
Documentation
  • Coverage
  • 83.33%
    5 out of 6 items documented5 out of 5 items with examples
  • Size
  • Source code size: 10.72 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 1.3 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 9s Average build duration of successful builds.
  • all releases: 9s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • L-as/matches2
    1 1 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • SOF3 L-as

matches2

Crates.io License

This is a fork of the matches crate with an extra unwrap_match! and option_match! macro, and also better error messages for assert_matches.

Documentation

unwrap_match! macro

The unwrap_match! macro is a general unwrap, used as such:

	let output = unwrap_match!(input, AnEnum::Variant(a) | AnEnum::OtherVariant(a) if a < 5 * 2 => a);

If it fails, it emits a descriptive error including the pattern and the input, for this reason input must implement Debug, unless you provide a custom error message as the last arguments, in the same way you'd use format!.

option_match! macro

The option_match! macro is like unwrap_match!, except instead of failing, it just returns an Option.

	let output: Option<_> = option_match!(input, AnEnum::Variant(a) | AnEnum::OtherVariant(a) if a < 5 * 2 => a);

Error message improvements

The original matches crate would emit horrible errors when assertions failed, outputting a pattern such as Some(_) as Some ( _ ). This version has properly formatted errors, so you will never experience this again.