#options #pattern-matching #enums #returning #match #value

possibly

Like matches!(), but returning an Option type

1 stable release

1.0.0 Jun 17, 2024

#19 in #returning


Used in 7 crates (3 directly)

MIT license

3KB

possibly

A single exported macro called possibly!(), which works std::matches!() but allowing to return a value when the values matches.

It can be useful if you want to use pattern matching without dealing with extra cases.

The result is wrapped inside an Option.

Usage

use possibly::possibly;

enum MyEnum {
    Foo(u32),
    Bar
}

let value = MyEnum::Foo(1);

// basic usage with simple match arm
assert_eq!(
    possibly!(value, MyEnum::Foo(b) => b), 
    Some(1)
);

// with match arm condition
assert_eq!(
    possibly!(value, MyEnum::Foo(b) if i > 5 => b),
    None
);

No runtime deps