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