diff --git a/src/backing/indexed/binary_heap.rs b/src/backing/indexed/binary_heap.rs index 9c69025..05c73e6 100644 --- a/src/backing/indexed/binary_heap.rs +++ b/src/backing/indexed/binary_heap.rs @@ -124,8 +124,12 @@ impl Fr fn from_iter>(iter: T) -> Self { let mut this = Self::new(); for (i, (data, priority)) in iter.into_iter().enumerate() { - this.indices.insert(data.clone(), i); - this.data.push(Pair::new(data, priority)); + if let Some(prev) = this.indices.insert(data.clone(), i) { + this.indices.insert(data.clone(), prev).unwrap(); + this.data[prev] = Pair::new(data, priority); + } else { + this.data.push(Pair::new(data, priority)); + } } for i in (0..=(this.data.len() / 2)).rev() { this.sift_down(i).expect("Index error during heapify");