Fix VecMap::iter_mut
It used to allow you to mutate the key, even though that can invalidate the map by creating duplicate keys.
This commit is contained in:
parent
7c89e389d0
commit
d693a98f4e
@ -24,6 +24,7 @@
|
||||
#![feature(new_uninit)]
|
||||
#![feature(once_cell)]
|
||||
#![feature(maybe_uninit_uninit_array)]
|
||||
#![feature(min_type_alias_impl_trait)]
|
||||
#![allow(rustc::default_hash_types)]
|
||||
#![deny(unaligned_references)]
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
use std::borrow::Borrow;
|
||||
use std::iter::FromIterator;
|
||||
use std::slice::{Iter, IterMut};
|
||||
use std::slice::Iter;
|
||||
use std::vec::IntoIter;
|
||||
|
||||
use crate::stable_hasher::{HashStable, StableHasher};
|
||||
@ -67,7 +67,7 @@ pub fn iter(&self) -> Iter<'_, (K, V)> {
|
||||
self.into_iter()
|
||||
}
|
||||
|
||||
pub fn iter_mut(&mut self) -> IterMut<'_, (K, V)> {
|
||||
pub fn iter_mut(&mut self) -> impl Iterator<Item = (&K, &mut V)> {
|
||||
self.into_iter()
|
||||
}
|
||||
}
|
||||
@ -108,12 +108,12 @@ fn into_iter(self) -> Self::IntoIter {
|
||||
}
|
||||
|
||||
impl<'a, K, V> IntoIterator for &'a mut VecMap<K, V> {
|
||||
type Item = &'a mut (K, V);
|
||||
type IntoIter = IterMut<'a, (K, V)>;
|
||||
type Item = (&'a K, &'a mut V);
|
||||
type IntoIter = impl Iterator<Item = Self::Item>;
|
||||
|
||||
#[inline]
|
||||
fn into_iter(self) -> Self::IntoIter {
|
||||
self.0.iter_mut()
|
||||
self.0.iter_mut().map(|(k, v)| (&*k, v))
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user