Wie kann ich mit Rusts BinaryHeap einen Min-Heap von f64 implementieren?

Ich möchte einen binären Heap mit Floats füllen - genauer gesagt, ich möchte einen Min-Heap implementieren.

Es scheint, dass Floats @ nicht unterstützOrd und sind daher nicht sofort verwendbar. Meine Versuche, sie einzuwickeln, sind bisher gescheitert. Es scheint jedoch, dass ich, wenn ich sie einpacken könnte, auch @ implementieren könntOrd so, dass es effektiv machen würdeBinaryHeap ein min-Haufen.

Hier ist ein Beispiel für einen Wrapper, den ich ausprobiert habe:

#[derive(PartialEq, PartialOrd)]
struct MinNonNan(f64);

impl Eq for MinNonNan {}

impl Ord for MinNonNan {
    fn cmp(&self, other: &MinNonNan) -> Ordering {
        let ord = self.partial_cmp(other).unwrap();
        match ord {
            Ordering::Greater => Ordering::Less,
            Ordering::Less => Ordering::Greater,
            Ordering::Equal => ord
        }
    }
}

Das Problem istpop gibt die Werte zurück, als wäre es ein Max-Heap.

Was genau muss ich tun, um ein @ auszufülleBinaryHeap mitf64 Werte als Min-Heap?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage