[−][src]Function sise::read_into_tree
pub fn read_into_tree<R: Reader>(reader: &mut R) -> Result<Node, R::Error>
Reads from reader
and builds a tree of Node
. Unlike
read_tree
, it does not return a position tree.
Example
use sise::sise_expr; use sise::Reader as _; let data = b"(test (1 2 3))"; let mut parser = sise::Parser::new(data); let root_node = sise::read_into_tree(&mut parser).unwrap(); parser.finish().unwrap(); let expected_result = sise_expr!(["test", ["1", "2", "3"]]); assert_eq!(root_node, expected_result);
It does not consume the reader, so it can also be used to read a sub-tree:
use sise::sise_expr; use sise::Reader as _; let data = b"(head (1 2 3) tail)"; let mut parser = sise::Parser::new(data); // Read the head assert_eq!(parser.read().unwrap().kind, sise::ReadItemKind::ListBeginning); assert_eq!(parser.read().unwrap().kind, sise::ReadItemKind::Atom("head")); // Read the subtree let root_node = sise::read_into_tree(&mut parser).unwrap(); let expected_result = sise_expr!(["1", "2", "3"]); assert_eq!(root_node, expected_result); // Read the tail assert_eq!(parser.read().unwrap().kind, sise::ReadItemKind::Atom("tail")); assert_eq!(parser.read().unwrap().kind, sise::ReadItemKind::ListEnding); parser.finish().unwrap();