macro_rules! hlist_pat { () => { ... }; (...) => { ... }; (...$rest:pat) => { ... }; ($a:pat) => { ... }; ($a:pat, $($tok:tt)*) => { ... }; }
Expand description
Macro for pattern-matching on HLists.
Taken from https://github.com/tbu-/rust-rfcs/blob/master/text/0873-type-macros.md
Examples
let h = hlist![13.5f32, "hello", Some(41)];
let hlist_pat![a1, a2, a3] = h;
assert_eq!(a1, 13.5f32);
assert_eq!(a2, "hello");
assert_eq!(a3, Some(41));
// Use "...tail" to match the rest of the list
let hlist_pat![b_head, ...b_tail] = h;
assert_eq!(b_head, 13.5f32);
assert_eq!(b_tail, hlist!["hello", Some(41)]);
// You can also use "..." to just ignore the rest.
let hlist_pat![c, ...] = h;
assert_eq!(c, 13.5f32);
Run