macro_rules! sise_expr {
([$($item:tt),*]) => { ... };
([$($item:tt,)*]) => { ... };
($node:expr) => { ... };
}
Expand description
Macro to define values with a lighter syntax.
Example
use sise::sise_expr;
// atom
let value1 = sise::Node::Atom(String::from("atom"));
let value2 = sise_expr!("atom");
assert_eq!(value1, value2);
// ()
let value1 = sise::Node::List(vec![]);
let value2 = sise_expr!([]);
assert_eq!(value1, value2);
// (atom)
let value1 = sise::Node::List(vec![
sise::Node::Atom(String::from("atom"))
]);
let value2 = sise_expr!(["atom"]);
assert_eq!(value1, value2);
// (atom (1 2 3) (a b c))
let value1 = sise::Node::List(vec![
sise::Node::Atom(String::from("atom")),
sise::Node::List(vec![
sise::Node::Atom(String::from("1")),
sise::Node::Atom(String::from("2")),
sise::Node::Atom(String::from("3")),
]),
sise::Node::List(vec![
sise::Node::Atom(String::from("a")),
sise::Node::Atom(String::from("b")),
sise::Node::Atom(String::from("c")),
]),
]);
let value2 = sise_expr!(["atom", ["1", "2", "3"], ["a", "b", "c"]]);
assert_eq!(value1, value2);