Я могу использовать std::collections::BinaryHeap
для перебора коллекции структуры в порядке от наибольший до наименьший с pop
, но моя цель - перебрать коллекциюот наименьшего к наибольшему.
Я преуспел, изменив реализацию Ord
:
impl Ord for Item {
fn cmp(&self, other: &Self) -> Ordering {
match self.offset {
b if b > other.offset => Ordering::Less,
b if b < other.offset => Ordering::Greater,
b if b == other.offset => Ordering::Equal,
_ => Ordering::Equal, // ?not sure why compiler needs this
}
}
}
Теперь BinaryHeap
возвращает Item
s от наименьшего к наибольшему.Видя, как это не предназначенный API, это неправильный или подверженный ошибкам шаблон?
Я понимаю, что LinkedList
даст мне метод pop_front
, но мне нужно будет отсортировать список при вставке.Это лучшее решение?