pub fn read(src: &str) -> Result<Vec<Val>, Val>
Iterative, so nesting depth is bounded by memory rather than the Rust stack.