Skip to content

Commit

Permalink
impl Default for Hash{Map,Set} iterators that don't already have it
Browse files Browse the repository at this point in the history
  • Loading branch information
clarfonthey committed Oct 3, 2024
1 parent 2b4f6ec commit f89b8dc
Show file tree
Hide file tree
Showing 2 changed files with 80 additions and 0 deletions.
64 changes: 64 additions & 0 deletions std/src/collections/hash/map.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1438,6 +1438,14 @@ impl<K, V> Clone for Iter<'_, K, V> {
}
}

#[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 {
Expand Down Expand Up @@ -1476,6 +1484,14 @@ impl<'a, K, V> IterMut<'a, 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`]
Expand Down Expand Up @@ -1506,6 +1522,14 @@ impl<K, V> IntoIter<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
Expand Down Expand Up @@ -1538,6 +1562,14 @@ impl<K, V> Clone for Keys<'_, K, V> {
}
}

#[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 {
Expand Down Expand Up @@ -1577,6 +1609,14 @@ impl<K, V> Clone for Values<'_, K, V> {
}
}

#[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 {
Expand Down Expand Up @@ -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`].
Expand All @@ -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`].
Expand All @@ -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.
Expand Down
16 changes: 16 additions & 0 deletions std/src/collections/hash/set.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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`]
Expand All @@ -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`].
Expand Down

0 comments on commit f89b8dc

Please sign in to comment.