extract-variant

Crates.ioextract-variant
lib.rsextract-variant
version1.0.0
sourcesrc
created_at2022-12-04 00:54:00.417747
updated_at2023-04-07 18:09:42.274703
descriptionDestructure expressions into, and return assignments from, a single pattern.
homepagehttps://github.com/marcusdesai/variant
repositoryhttps://github.com/marcusdesai/variant
max_upload_size
id729338
size23,869
Marcus Desai (marcusdesai)

documentation

https://docs.rs/extract-variant

README

Variant: Destructuring Macros

docs.rs Crates.io

This small crate exports two convenience macros. try_variant!, which can be used to destructure an expression into a single pattern, returning a result of assignments in the pattern. get_variant!, which works in the same way but returns an Option.

Both macros work similarly to the matches! macro from the rust std lib.

This macro is mainly useful for reducing matching boilerplate when you just want to try and extract some values from a pattern match (my reason for making this 😉).

Example

use variant::try_variant;

let val = Some((0, 1));
let res = try_variant!(val, Some((i, _))).expect("i");
assert_eq!(res, 0);

let res = try_variant!(val, Some((10, j)));
assert!(res.is_err());

There are more examples on the docs page

Commit count: 30

cargo fmt