orx-priority-queue 1.8.0

Priority queue traits and high performance d-ary heap implementations.
Documentation
use orx_priority_queue::{NodeKeyRef, PriorityQueue};

pub fn test_peek<P>(mut pq: P)
where
    P: PriorityQueue<usize, f64>,
{
    pq.clear();
    assert!(pq.peek().is_none());

    pq.push(1, 2.0);
    assert_eq!(Some(&1), pq.peek().map(|nk| nk.node()));
    assert_eq!(Some(&2.0), pq.peek().map(|nk| nk.key()));

    pq.push(2, 3.0);
    assert_eq!(Some(&1), pq.peek().map(|nk| nk.node()));
    assert_eq!(Some(&2.0), pq.peek().map(|nk| nk.key()));

    pq.push(3, 1.0);
    assert_eq!(Some(&3), pq.peek().map(|nk| nk.node()));
    assert_eq!(Some(&1.0), pq.peek().map(|nk| nk.key()));

    pq.pop();
    assert_eq!(Some(&1), pq.peek().map(|nk| nk.node()));
    assert_eq!(Some(&2.0), pq.peek().map(|nk| nk.key()));

    pq.pop();
    assert_eq!(Some(&2), pq.peek().map(|nk| nk.node()));
    assert_eq!(Some(&3.0), pq.peek().map(|nk| nk.key()));

    pq.pop();
    assert!(pq.peek().is_none());
}