Is it important for `traverse` to pass along an option type? Is it important to inform end users that a key has been deleted? Or is that implementation specific? If so, I suggest rewriting `traverse` to something like this (assuming this actually works):
impl<K, V> RBMap<K, V>: iter::BaseIter<(&K, &V)> { pure fn each(f: fn(&(&K, &V))) { match *self { Leaf => (), Tree(_, left, ref key, maybe_value, right) => { left.traverse(f); match maybe_value { Some(ref value) => f(&(key, value)), None => {}, } right.traverse(f); } } } } On Mon, Dec 17, 2012 at 11:46 AM, Graydon Hoare <gray...@mozilla.com> wrote: > On 12-12-17 11:28 AM, Graydon Hoare wrote: > > On 12-12-14 03:51 PM, Steve Jenson wrote: > >> I recently ported Matt Might's Scala port of Okasaki's purely functional > >> red-black tree to Rust and am looking for some feedback. > >> > >> https://github.com/stevej/rustled/blob/master/red_black_tree.rs > >> > >> I've written this for 0.4 and will update it with other feedback I've > >> received for 0.5 when that lands. > > > > Nice! The only things I'd ask are: > > > > - I can't tell at a glance (sorry, RB-trees are always very subtle) > > whether this is an LLRB. If not, could you make it so? It's likely > > just a simplification to a couple of the functions. > > Er, except of course, there's also: > > https://github.com/fawek/llrbt.rs > > I think we need some better coordination of library development :) > > -Graydon > > _______________________________________________ > Rust-dev mailing list > Rust-dev@mozilla.org > https://mail.mozilla.org/listinfo/rust-dev >
_______________________________________________ Rust-dev mailing list Rust-dev@mozilla.org https://mail.mozilla.org/listinfo/rust-dev