pub fn entry(&mut self, key: K) -> Entry<'_, K, V>
    where
        K: Ord,
    {
        // FIXME(@porglezomp) Avoid allocating if we don't insert
        let (map, dormant_map) = DormantMutRef::new(self);
        let root_node = Self::ensure_is_owned(&mut map.root).borrow_mut();
        match root_node.search_tree(&key) {
            Found(handle) => Occupied(OccupiedEntry { handle, dormant_map, _marker: PhantomData }),
            GoDown(handle) => {
                Vacant(VacantEntry { key, handle, dormant_map, _marker: PhantomData })
            }
        }
    }
Creates an iterator that visits all elements (key-value pairs) in
ascending key order and uses a closure to determine if an element should
be removed. If the closure returns `true`, the element is removed from
the map and yielded. If the closure returns `false`, or panics, the
element remains in the map and will not be yielded.

The iterator also lets you mutate the value of each element in the
closure, regardless of whether you choose to keep or remove it.

If the iterator is only partially consumed or not consumed at all, each
of the remaining elements is still subjected to the closure, which may
change its value and, by returning `true`, have the element removed and
dropped.

It is unspecified how many more elements will be subjected to the
closure i
benchmarks/haystacks/code/rust-library.rs