Auto merge of #128711 - clarfonthey:default-iters-hash, r=dtolnay
impl `Default` for `HashMap`/`HashSet` iterators that don't already have it This is a follow-up to #128261 that isn't included in that PR because it depends on: * [x] rust-lang/hashbrown#542 (`Default`) * [x] `hashbrown` release containing above It also wasn't included in #128261 initially and should have its own FCP, since these are also insta-stable. Changes added: * `Default for hash_map::{Iter, IterMut, IntoIter, IntoKeys, IntoValues, Keys, Values, ValuesMut}` * `Default for hash_set::{Iter, IntoIter}` Changes that were added before FCP, but are being deferred to later: * `Clone for hash_map::{IntoIter, IntoKeys, IntoValues} where K: Clone, V: Clone` * `Clone for hash_set::IntoIter where K: Clone`
This commit is contained in:
commit
f7c8928f03
@ -1438,6 +1438,14 @@ fn clone(&self) -> Self {
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "default_iters_hash", since = "CURRENT_RUSTC_VERSION")]
|
||||
impl<K, V> Default for Iter<'_, K, V> {
|
||||
#[inline]
|
||||
fn default() -> Self {
|
||||
Iter { base: Default::default() }
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "std_debug", since = "1.16.0")]
|
||||
impl<K: Debug, V: Debug> fmt::Debug for Iter<'_, K, V> {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
@ -1476,6 +1484,14 @@ pub(super) fn iter(&self) -> Iter<'_, K, V> {
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "default_iters_hash", since = "CURRENT_RUSTC_VERSION")]
|
||||
impl<K, V> Default for IterMut<'_, K, V> {
|
||||
#[inline]
|
||||
fn default() -> Self {
|
||||
IterMut { base: Default::default() }
|
||||
}
|
||||
}
|
||||
|
||||
/// An owning iterator over the entries of a `HashMap`.
|
||||
///
|
||||
/// This `struct` is created by the [`into_iter`] method on [`HashMap`]
|
||||
@ -1506,6 +1522,14 @@ pub(super) fn iter(&self) -> Iter<'_, K, V> {
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "default_iters_hash", since = "CURRENT_RUSTC_VERSION")]
|
||||
impl<K, V> Default for IntoIter<K, V> {
|
||||
#[inline]
|
||||
fn default() -> Self {
|
||||
IntoIter { base: Default::default() }
|
||||
}
|
||||
}
|
||||
|
||||
/// An iterator over the keys of a `HashMap`.
|
||||
///
|
||||
/// This `struct` is created by the [`keys`] method on [`HashMap`]. See its
|
||||
@ -1538,6 +1562,14 @@ fn clone(&self) -> Self {
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "default_iters_hash", since = "CURRENT_RUSTC_VERSION")]
|
||||
impl<K, V> Default for Keys<'_, K, V> {
|
||||
#[inline]
|
||||
fn default() -> Self {
|
||||
Keys { inner: Default::default() }
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "std_debug", since = "1.16.0")]
|
||||
impl<K: Debug, V> fmt::Debug for Keys<'_, K, V> {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
@ -1577,6 +1609,14 @@ fn clone(&self) -> Self {
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "default_iters_hash", since = "CURRENT_RUSTC_VERSION")]
|
||||
impl<K, V> Default for Values<'_, K, V> {
|
||||
#[inline]
|
||||
fn default() -> Self {
|
||||
Values { inner: Default::default() }
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "std_debug", since = "1.16.0")]
|
||||
impl<K, V: Debug> fmt::Debug for Values<'_, K, V> {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
@ -1665,6 +1705,14 @@ pub struct ValuesMut<'a, K: 'a, V: 'a> {
|
||||
inner: IterMut<'a, K, V>,
|
||||
}
|
||||
|
||||
#[stable(feature = "default_iters_hash", since = "CURRENT_RUSTC_VERSION")]
|
||||
impl<K, V> Default for ValuesMut<'_, K, V> {
|
||||
#[inline]
|
||||
fn default() -> Self {
|
||||
ValuesMut { inner: Default::default() }
|
||||
}
|
||||
}
|
||||
|
||||
/// An owning iterator over the keys of a `HashMap`.
|
||||
///
|
||||
/// This `struct` is created by the [`into_keys`] method on [`HashMap`].
|
||||
@ -1687,6 +1735,14 @@ pub struct IntoKeys<K, V> {
|
||||
inner: IntoIter<K, V>,
|
||||
}
|
||||
|
||||
#[stable(feature = "default_iters_hash", since = "CURRENT_RUSTC_VERSION")]
|
||||
impl<K, V> Default for IntoKeys<K, V> {
|
||||
#[inline]
|
||||
fn default() -> Self {
|
||||
IntoKeys { inner: Default::default() }
|
||||
}
|
||||
}
|
||||
|
||||
/// An owning iterator over the values of a `HashMap`.
|
||||
///
|
||||
/// This `struct` is created by the [`into_values`] method on [`HashMap`].
|
||||
@ -1709,6 +1765,14 @@ pub struct IntoValues<K, V> {
|
||||
inner: IntoIter<K, V>,
|
||||
}
|
||||
|
||||
#[stable(feature = "default_iters_hash", since = "CURRENT_RUSTC_VERSION")]
|
||||
impl<K, V> Default for IntoValues<K, V> {
|
||||
#[inline]
|
||||
fn default() -> Self {
|
||||
IntoValues { inner: Default::default() }
|
||||
}
|
||||
}
|
||||
|
||||
/// A builder for computing where in a HashMap a key-value pair would be stored.
|
||||
///
|
||||
/// See the [`HashMap::raw_entry_mut`] docs for usage examples.
|
||||
|
@ -1244,6 +1244,14 @@ pub struct Iter<'a, K: 'a> {
|
||||
base: base::Iter<'a, K>,
|
||||
}
|
||||
|
||||
#[stable(feature = "default_iters_hash", since = "CURRENT_RUSTC_VERSION")]
|
||||
impl<K> Default for Iter<'_, K> {
|
||||
#[inline]
|
||||
fn default() -> Self {
|
||||
Iter { base: Default::default() }
|
||||
}
|
||||
}
|
||||
|
||||
/// An owning iterator over the items of a `HashSet`.
|
||||
///
|
||||
/// This `struct` is created by the [`into_iter`] method on [`HashSet`]
|
||||
@ -1265,6 +1273,14 @@ pub struct IntoIter<K> {
|
||||
base: base::IntoIter<K>,
|
||||
}
|
||||
|
||||
#[stable(feature = "default_iters_hash", since = "CURRENT_RUSTC_VERSION")]
|
||||
impl<K> Default for IntoIter<K> {
|
||||
#[inline]
|
||||
fn default() -> Self {
|
||||
IntoIter { base: Default::default() }
|
||||
}
|
||||
}
|
||||
|
||||
/// A draining iterator over the items of a `HashSet`.
|
||||
///
|
||||
/// This `struct` is created by the [`drain`] method on [`HashSet`].
|
||||
|
Loading…
Reference in New Issue
Block a user