pub trait PriorityQueue<N, K>: Clone
where
K: PartialOrd,
{
fn len(&self) -> usize;
fn is_empty(&self) -> bool {
self.len() == 0
}
fn as_slice(&self) -> &[(N, K)];
fn peek(&self) -> Option<&(N, K)>;
fn clear(&mut self);
fn pop(&mut self) -> Option<(N, K)>;
fn pop_node(&mut self) -> Option<N>;
fn pop_key(&mut self) -> Option<K>;
fn push(&mut self, node: N, key: K);
fn push_then_pop(&mut self, node: N, key: K) -> (N, K);
#[cfg(test)]
fn is_valid(&self) -> bool;
}