[][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();