macro_rules! linq {
(from $v:ident in $c:expr, select $ms:expr) => { ... };
(from $v:ident in $c:expr, $(where $mw:expr,)+ select $ms:expr) => { ... };
(from $v:ident in $c:expr, orderby $mo:expr, select $ms:expr) => { ... };
(from $v:ident in $c:expr, orderby $mo:expr, descending, select $ms:expr) => { ... };
(from $v:ident in $c:expr, $(where $mw:expr,)+ orderby $mo:expr, select $ms:expr) => { ... };
(from $v:ident in $c:expr, $(where $mw:expr,)+ orderby $mo:expr, descending, select $ms:expr) => { ... };
(from $v0:ident in $c0:expr, from $v:ident in $c:expr, select $ms:expr) => { ... };
(from $v0:ident in $c0:expr, zfrom $v:ident in $c:expr, select $ms:expr) => { ... };
}
Create linq query
Use ,
to split each sub-statement.
See readme for more usage.
use linq::linq;
use linq::iter::Enumerable;
let x = 1..100;
let y: Vec<i32> = x
.clone()
.where_by(|p| p <= &5)
.order_by(|p| -p)
.select(|p| p * 2)
.collect();
let e: Vec<i32> =
linq!(from p in x.clone(), where p <= &5, orderby -p, select p * 2).collect();
assert_eq!(e, y);