fn log2_fast(x: usize) -> usize {
            (usize::BITS - x.leading_zeros() - 1) as usize
        }
Returns an iterator which retrieves elements in heap order.
The retrieved elements are removed from the original heap.
The remaining elements will be removed on drop in heap order.

Note:
* `.drain_sorted()` is *O*(*n* \* log(*n*)); much slower than `.drain()`.
You should use the latter for most cases.

# Examples

Basic usage:

```
#![feature(binary_heap_drain_sorted)]
use std::collections::BinaryHeap;

let mut heap = BinaryHea
benchmarks/haystacks/code/rust-library.rs