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}