Skip to content

Instantly share code, notes, and snippets.

@lilyball
Forked from smvv/btree.rs
Last active December 19, 2015 16:08
Show Gist options
  • Select an option

  • Save lilyball/5981184 to your computer and use it in GitHub Desktop.

Select an option

Save lilyball/5981184 to your computer and use it in GitHub Desktop.
/*
rustc -O -L. --test -o btree btree.rs
btree.rs:68:24: 79:7 error: mismatched types: expected `~[~str]` but found `std::iterator::MapIterator<,&std::option::Option<TreeItem<T,U>>,~(),std::vec::VecIterator<,std::option::Option<TreeItem<T,U>>>>` (expected vector but found struct std::iterator::MapIterator)
btree.rs:68 let buf : ~[~str] = tree.nodes.iter().transform(|x| {
btree.rs:69 ~"\t".repeat(indent).push_str(match *x {
btree.rs:70 Some(TreeNode { key: k, value: tree }) => {
btree.rs:71 let buf = ~"Node(key=...)\n";
btree.rs:72 buf //buf.push_str(tree.to_str())
btree.rs:73 }
...
*/
impl<K: ToStr, V> ToStr for BTree<K, V> {
fn to_str(&self) -> ~str { to_str(self, 0) }
}
fn to_str<K: ToStr, V>(tree: &mut BTree<K, V>, indent: uint) -> ~str {
let buf : ~[~str] = tree.nodes.iter().transform(|x| {
"\t".repeat(indent) + match *x {
Some(TreeNode { key: k, value: tree }) => {
let buf = ~"Node(key=...)\n";
buf //buf.push_str(tree.to_str())
}
Some(TreeLeaf { key: k, value: _ }) => {
fmt!("Leaf(key=%s)", k.to_str())
}
None => ~"None",
}
}).collect();
buf.connect("\n")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment