Вы не можете удалить элемент, когда сравниваете что-то.
Кроме того, с моей точки зрения, реализация Ord
была бы неправильной по той же причине, почему Ord
не реализован для плавающего объекта.значения в Rust.Если у вас есть две не обновляемые структуры Weak
, между ними нет порядка, и именно поэтому существует PartialOrd
.
Если вы действительно хотите, чтобы ваш пример работал, внедрите Ord
для вашегонаберите и закажите необновляемые Weak
s в самом верху (например, это всегда самый большой элемент), затем используйте peek
на вашем BinaryHeap
, чтобы проверить, можно ли его обновить;если нет, удалите его и возьмите следующий.
Это неприятный хак, но, вероятно, ваше лучшее решение, если вы хотите, чтобы ваша вещь работала.