Macro list_comprehension::comp
source · macro_rules! comp { ($out:expr => $( $unparsed:tt )+) => { ... }; ($out:expr , $( $unparsed:tt )+) => { ... }; ($out:expr ; $( $unparsed:tt )+) => { ... }; }
Expand description
List Comprehension
A macro for Haskell-like list comprehensions in Rust
Examples:
use list_comprehension::comp;
// example 1
let arr1: Vec<i32> = comp![n => n in [0, 1, 2, 3], n != 3];
assert_eq!(arr1, [0, 1, 2]);
// example 2
let a = [0, 1, 2];
let arr2: Vec<(i32, i32)> = comp![
(n, m)
, n in a
, m in [0, 1, 2]
, n != 2
, m != 2
];
assert_eq!(arr2, [(0, 0), (0, 1), (1, 0), (1, 1)]);
// example 3
let arr = comp![
()
, let { a1 = 1; mut b1 = 2; c1: i8 = 3; mut d1: i8 = 4 }
, let mut { a2 = 1; mut b2 = 2; c2: i8 = 3; mut d2: i8 = 4 }
, let a3 = 1
, let mut b3: i8 = 1
, let Some(num) = Some(114) else { panic!("Actually this panic shouldn't be called") }
];
More details can be found in README.md