pub(crate) fn k_smallest<T: Ord, I: Iterator<Item = T>>(
    iter: I,
    k: usize
) -> BinaryHeap<T>