Oh, also, shouldn't the ordering be value-dependent too? i.e. a b-tree that's just `{1: 2}` (in Python notation) is less than a b-tree that's `{1: 10}`. I think you can replace this by just putting `#[deriving(TotalOrd)]` above the `Node` declaration. (And, `#[deriving(Eq, TotalEq, Ord, TotalOrd, Clone)] struct Node<K,V> { ... }` will give you all those traits for "free".)