Macro yaml_peg::node[][src]

macro_rules! node {
    (@ [$v : expr ; $n : expr]) => { ... };
    (@ [$($v : expr), * $(,) ?]) => { ... };
    (@ { $($k : expr => $v : expr), * $(,) ? }) => { ... };
    (@ * $anchor : expr) => { ... };
    (@ $yaml : expr) => { ... };
    (arc $($tt : tt) +) => { ... };
    (rc $($tt : tt) +) => { ... };
    ($($tt : tt) +) => { ... };
}
Expand description

Create Node items literally.

Literals and expressions will be transformed to Yaml automatically by calling Into::into.

use yaml_peg::{node, Node};

let k = "a";
assert_eq!(node!(k), node!("a"));
assert_eq!(node!(()), Node::from(()));

Arrays and maps can be created from this macro directly through brackets ([], {}).

use yaml_peg::{node, Node};

let v = vec![Node::from(1), Node::from(2)];
assert_eq!(node!([1, 2]), v.into_iter().collect());
let m = vec![(Node::from(1), Node::from(2))];
assert_eq!(node!({1 => 2}), m.into_iter().collect());

The YamlBase::Anchor is also supported by the syntax:

use yaml_peg::{node, YamlBase};

assert_eq!(node!(YamlBase::Anchor("x".to_string())), node!(*"x"));

This macro is use Node by default, to specify them, a “rc” or “arc” prefix token can choose the presentation.

use yaml_peg::{node, ArcNode};

assert_eq!(node!(arc ()), ArcNode::from(()));