1 2 3 4 5 6 7 8 9 10 11 12
macro_rules! query { (from $v:ident; in $c:ident; $(where $mv:expr;)* select $ms:expr;) => { $c.filter(|$v| (true $(&& $mv)*) ).map(|$v| $ms) }; } #[test] fn query() { let x = 1..100; let y: Vec<i32> = x.clone().filter(|p| p % 2 == 0).map(|p| p * 2).collect(); let e: Vec<i32> = query!(from p; in x; where p % 2 == 0; select p * 2;).collect(); assert_eq!(e, y); }