faunadb/
macros.rs

1/// A helper macro to implement `From` trait from the given query type into the
2/// `Query` enum.
3#[macro_export]
4macro_rules! query {
5    ($($kind:ident),*) => (
6        $(
7            impl<'a> From<$kind<'a>> for Query<'a> {
8                fn from(q: $kind<'a>) -> Self {
9                    Query::$kind(q)
10                }
11            }
12        )*
13    );
14}
15
16/// A helper macro to implement `From` trait from the given query type into the
17/// `Query` enum, boxing the query.
18#[macro_export]
19macro_rules! boxed_query {
20    ($($kind:ident),*) => (
21        $(
22            impl<'a> From<$kind<'a>> for Query<'a> {
23                fn from(q: $kind<'a>) -> Self {
24                    Query::$kind(Box::new(q))
25                }
26            }
27        )*
28    );
29}
30
31/// A convenience to convert a type of a signed integer into Fauna `Expr`.
32#[macro_export]
33macro_rules! int_expr {
34    ($($kind:ident),*) => (
35        $(
36            impl<'a> From<$kind> for Number {
37                fn from(i: $kind) -> Number {
38                    Number::Int(i64::from(i))
39                }
40            }
41
42            impl<'a> From<$kind> for Expr<'a> {
43                fn from(i: $kind) -> Expr<'a> {
44                    Expr::Simple(SimpleExpr::Number(i.into()))
45                }
46            }
47        )*
48    );
49}
50
51/// A convenience to convert a type of a unsigned integer into Fauna `Expr`.
52#[macro_export]
53macro_rules! uint_expr {
54    ($($kind:ident),*) => (
55        $(
56            impl<'a> From<$kind> for Number {
57                fn from(i: $kind) -> Number {
58                    Number::UInt(u64::from(i))
59                }
60            }
61
62            impl<'a> From<$kind> for Expr<'a> {
63                fn from(i: $kind) -> Expr<'a> {
64                    Expr::Simple(SimpleExpr::Number(i.into()))
65                }
66            }
67        )*
68    );
69}