1 extern crate yaml_rust; 2 3 use std::env; 4 use std::fs::File; 5 use std::io::prelude::*; 6 use yaml_rust::yaml; 7 print_indent(indent: usize)8fn print_indent(indent: usize) { 9 for _ in 0..indent { 10 print!(" "); 11 } 12 } 13 dump_node(doc: &yaml::Yaml, indent: usize)14fn dump_node(doc: &yaml::Yaml, indent: usize) { 15 match *doc { 16 yaml::Yaml::Array(ref v) => { 17 for x in v { 18 dump_node(x, indent + 1); 19 } 20 } 21 yaml::Yaml::Hash(ref h) => { 22 for (k, v) in h { 23 print_indent(indent); 24 println!("{:?}:", k); 25 dump_node(v, indent + 1); 26 } 27 } 28 _ => { 29 print_indent(indent); 30 println!("{:?}", doc); 31 } 32 } 33 } 34 main()35fn main() { 36 let args: Vec<_> = env::args().collect(); 37 let mut f = File::open(&args[1]).unwrap(); 38 let mut s = String::new(); 39 f.read_to_string(&mut s).unwrap(); 40 41 let docs = yaml::YamlLoader::load_from_str(&s).unwrap(); 42 for doc in &docs { 43 println!("---"); 44 dump_node(doc, 0); 45 } 46 } 47