rule 0.1.6

A rule engine written in rust.
Documentation
/// Construct a `Resule<rule::Rule, rule::Error>` from a JSON array literal.
///
/// ```
/// use ::rule::rule;
///
/// let r = rule!["=", "a", 1].unwrap();
/// ```
#[macro_export(local_inner_macros)]
macro_rules! rule {
    ( [$($e:tt)*] ) => {
        rule![$($e)*]
    };
    ( $($e:tt)* ) => {
        $crate::Rule::new(json!([$($e)*]))
    };
}

#[cfg(test)]
mod tests {
    use crate::*;

    #[test]
    fn test_macro() -> Result<()> {
        assert_eq!(rule!["=", "a", 1]?, Rule::new(json!(["=", "a", 1]))?);
        assert_eq!(rule!["=", ["var", "a"], 1]?, Rule::new(json!(["=", ["var", "a"], 1]))?);
        assert_eq!(rule!["=", ["<", "a", 2], true]?, Rule::new(json!(["=", ["<", "a", 2], true]))?);
        Ok(())
    }
}