Struct yaml_peg::Node [−][src]
Expand description
Parser node, includes line number, column number, type assertion and anchor.
This type will ignore additional members when comparison and hashing.
use std::collections::HashSet; use yaml_peg::Node; let mut s = HashSet::new(); s.insert(Node::new("a".into()).pos(0)); s.insert(Node::new("a".into()).pos(1)); s.insert(Node::new("a".into()).pos(2)); assert_eq!(s.len(), 1);
There is a convenient macro node! to create nodes literally.
Nodes can be indexing by usize or &str,
but it will always return self if the index is not contained.
use yaml_peg::node; let n = node!(null); assert_eq!(n["a"][0]["bc"], n);
There are as_* methods provide Result<T, u64> returns with node position,
default options can be created by Result::unwrap_or,
additional error message can be attach by Result::map_err,
and the optional Option can be return by Result::ok,
which shown as following example:
use yaml_peg::node; fn main() -> Result<(), (&'static str, u64)> { let n = node!({ node!("title") => node!(12.) }); let n = n.get(&["title"]).map_err(|p| ("missing \"title\"", p))?; assert_eq!( Err(("title", 0)), n.as_str().map_err(|p| ("title", p)) ); assert_eq!( Option::<&str>::None, n.as_str().ok() ); Ok(()) }
Fields
pos: u64Document position
ty: StringType assertion
anchor: StringAnchor reference
yaml: YamlYAML data
Implementations
Convert to boolean.
use yaml_peg::{node}; assert!(node!(true).as_bool().unwrap());
Convert to integer.
use yaml_peg::node; assert_eq!(60, node!(60).as_int().unwrap());
Convert to float.
use yaml_peg::node; assert_eq!(20.06, node!(20.06).as_float().unwrap());
Convert to number.
use yaml_peg::node; assert_eq!(60, node!(60).as_number().unwrap()); assert_eq!(20.06, node!(20.06).as_number().unwrap());
Convert to string pointer.
This method allows null, it represented as empty string.
You can check them by str::is_empty.
use yaml_peg::node; assert_eq!("abc", node!("abc").as_str().unwrap()); assert!(node!(null).as_str().unwrap().is_empty());
Convert to string pointer for string, null, int, and float type.
This method is useful when the option mixed with digit values.
use yaml_peg::node; assert_eq!("abc", node!("abc").as_value().unwrap()); assert_eq!("123", node!(123).as_value().unwrap()); assert!(node!(null).as_value().unwrap().is_empty());
Convert to the string pointer of an anchor.
use yaml_peg::node; assert_eq!("abc", node!(*("abc")).as_anchor().unwrap());
Convert to array.
WARNING: The object ownership will be took.
use yaml_peg::node; assert_eq!( &vec![node!(1), node!(2)], node!([node!(1), node!(2)]).as_array().unwrap() );
Convert to map.
WARNING: The object ownership will be took.
use yaml_peg::node; assert_eq!( &node!(2), node!({node!(1) => node!(2)}).as_map().unwrap().get(&node!(1)).unwrap() );
Convert to map and try to get the value by keys recursivly.
If get failed, returns Option::None.
use yaml_peg::node; assert_eq!( &node!(30.), node!({node!("a") => node!({node!("b") => node!(30.)})}).get(&["a", "b"]).unwrap() );
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for Nodeimpl UnwindSafe for NodeBlanket Implementations
Mutably borrows from an owned value. Read more