diff options
| author | Scott McMurray <scottmcm@users.noreply.github.com> | 2019-02-17 19:42:36 -0800 |
|---|---|---|
| committer | Scott McMurray <scottmcm@users.noreply.github.com> | 2019-02-17 19:42:36 -0800 |
| commit | 3bea2ca49d24606920b3a81811379debc0668992 (patch) | |
| tree | 5e8cc79e957d9158bcdd1a26e848b7fbc7b24f97 /src/libstd/collections | |
| parent | 16ca0b9f6335db824e44629be1cafb6e3fcc4628 (diff) | |
| download | rust-3bea2ca49d24606920b3a81811379debc0668992.tar.gz rust-3bea2ca49d24606920b3a81811379debc0668992.zip | |
Use more impl header lifetime elision
There are two big categories of changes in here - Removing lifetimes from common traits that can essentially never user a lifetime from an input (particularly `Drop` & `Debug`) - Forwarding impls that are only possible because the lifetime doesn't matter (like `impl<R: Read + ?Sized> Read for &mut R`) I omitted things that seemed like they could be more controversial, like the handful of iterators that have a `Item: 'static` despite the iterator having a lifetime or the `PartialEq` implementations where the flipped one cannot elide the lifetime.
Diffstat (limited to 'src/libstd/collections')
| -rw-r--r-- | src/libstd/collections/hash/map.rs | 66 | ||||
| -rw-r--r-- | src/libstd/collections/hash/set.rs | 48 | ||||
| -rw-r--r-- | src/libstd/collections/hash/table.rs | 32 |
3 files changed, 73 insertions, 73 deletions
diff --git a/src/libstd/collections/hash/map.rs b/src/libstd/collections/hash/map.rs index 91c4e990e00..3dd299bf0ef 100644 --- a/src/libstd/collections/hash/map.rs +++ b/src/libstd/collections/hash/map.rs @@ -1641,7 +1641,7 @@ impl<K, V, S> Default for HashMap<K, V, S> } #[stable(feature = "rust1", since = "1.0.0")] -impl<'a, K, Q: ?Sized, V, S> Index<&'a Q> for HashMap<K, V, S> +impl<K, Q: ?Sized, V, S> Index<&Q> for HashMap<K, V, S> where K: Eq + Hash + Borrow<Q>, Q: Eq + Hash, S: BuildHasher @@ -1673,14 +1673,14 @@ pub struct Iter<'a, K: 'a, V: 'a> { // FIXME(#26925) Remove in favor of `#[derive(Clone)]` #[stable(feature = "rust1", since = "1.0.0")] -impl<'a, K, V> Clone for Iter<'a, K, V> { - fn clone(&self) -> Iter<'a, K, V> { +impl<K, V> Clone for Iter<'_, K, V> { + fn clone(&self) -> Self { Iter { inner: self.inner.clone() } } } #[stable(feature = "std_debug", since = "1.16.0")] -impl<'a, K: Debug, V: Debug> fmt::Debug for Iter<'a, K, V> { +impl<K: Debug, V: Debug> fmt::Debug for Iter<'_, K, V> { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { f.debug_list() .entries(self.clone()) @@ -1726,14 +1726,14 @@ pub struct Keys<'a, K: 'a, V: 'a> { // FIXME(#26925) Remove in favor of `#[derive(Clone)]` #[stable(feature = "rust1", since = "1.0.0")] -impl<'a, K, V> Clone for Keys<'a, K, V> { - fn clone(&self) -> Keys<'a, K, V> { +impl<K, V> Clone for Keys<'_, K, V> { + fn clone(&self) -> Self { Keys { inner: self.inner.clone() } } } #[stable(feature = "std_debug", since = "1.16.0")] -impl<'a, K: Debug, V> fmt::Debug for Keys<'a, K, V> { +impl<K: Debug, V> fmt::Debug for Keys<'_, K, V> { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { f.debug_list() .entries(self.clone()) @@ -1755,14 +1755,14 @@ pub struct Values<'a, K: 'a, V: 'a> { // FIXME(#26925) Remove in favor of `#[derive(Clone)]` #[stable(feature = "rust1", since = "1.0.0")] -impl<'a, K, V> Clone for Values<'a, K, V> { - fn clone(&self) -> Values<'a, K, V> { +impl<K, V> Clone for Values<'_, K, V> { + fn clone(&self) -> Self { Values { inner: self.inner.clone() } } } #[stable(feature = "std_debug", since = "1.16.0")] -impl<'a, K, V: Debug> fmt::Debug for Values<'a, K, V> { +impl<K, V: Debug> fmt::Debug for Values<'_, K, V> { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { f.debug_list() .entries(self.clone()) @@ -2241,7 +2241,7 @@ impl<'a, K, V, S> RawVacantEntryMut<'a, K, V, S> { } #[unstable(feature = "hash_raw_entry", issue = "56167")] -impl<'a, K, V, S> Debug for RawEntryBuilderMut<'a, K, V, S> { +impl<K, V, S> Debug for RawEntryBuilderMut<'_, K, V, S> { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { f.debug_struct("RawEntryBuilder") .finish() @@ -2249,7 +2249,7 @@ impl<'a, K, V, S> Debug for RawEntryBuilderMut<'a, K, V, S> { } #[unstable(feature = "hash_raw_entry", issue = "56167")] -impl<'a, K: Debug, V: Debug, S> Debug for RawEntryMut<'a, K, V, S> { +impl<K: Debug, V: Debug, S> Debug for RawEntryMut<'_, K, V, S> { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { match *self { RawEntryMut::Vacant(ref v) => { @@ -2267,7 +2267,7 @@ impl<'a, K: Debug, V: Debug, S> Debug for RawEntryMut<'a, K, V, S> { } #[unstable(feature = "hash_raw_entry", issue = "56167")] -impl<'a, K: Debug, V: Debug> Debug for RawOccupiedEntryMut<'a, K, V> { +impl<K: Debug, V: Debug> Debug for RawOccupiedEntryMut<'_, K, V> { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { f.debug_struct("RawOccupiedEntryMut") .field("key", self.key()) @@ -2277,7 +2277,7 @@ impl<'a, K: Debug, V: Debug> Debug for RawOccupiedEntryMut<'a, K, V> { } #[unstable(feature = "hash_raw_entry", issue = "56167")] -impl<'a, K, V, S> Debug for RawVacantEntryMut<'a, K, V, S> { +impl<K, V, S> Debug for RawVacantEntryMut<'_, K, V, S> { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { f.debug_struct("RawVacantEntryMut") .finish() @@ -2285,7 +2285,7 @@ impl<'a, K, V, S> Debug for RawVacantEntryMut<'a, K, V, S> { } #[unstable(feature = "hash_raw_entry", issue = "56167")] -impl<'a, K, V, S> Debug for RawEntryBuilder<'a, K, V, S> { +impl<K, V, S> Debug for RawEntryBuilder<'_, K, V, S> { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { f.debug_struct("RawEntryBuilder") .finish() @@ -2312,7 +2312,7 @@ pub enum Entry<'a, K: 'a, V: 'a> { } #[stable(feature= "debug_hash_map", since = "1.12.0")] -impl<'a, K: 'a + Debug, V: 'a + Debug> Debug for Entry<'a, K, V> { +impl<K: Debug, V: Debug> Debug for Entry<'_, K, V> { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { match *self { Vacant(ref v) => { @@ -2340,7 +2340,7 @@ pub struct OccupiedEntry<'a, K: 'a, V: 'a> { } #[stable(feature= "debug_hash_map", since = "1.12.0")] -impl<'a, K: 'a + Debug, V: 'a + Debug> Debug for OccupiedEntry<'a, K, V> { +impl<K: Debug, V: Debug> Debug for OccupiedEntry<'_, K, V> { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { f.debug_struct("OccupiedEntry") .field("key", self.key()) @@ -2361,7 +2361,7 @@ pub struct VacantEntry<'a, K: 'a, V: 'a> { } #[stable(feature= "debug_hash_map", since = "1.12.0")] -impl<'a, K: 'a + Debug, V: 'a> Debug for VacantEntry<'a, K, V> { +impl<K: Debug, V> Debug for VacantEntry<'_, K, V> { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { f.debug_tuple("VacantEntry") .field(self.key()) @@ -2448,7 +2448,7 @@ impl<'a, K, V> Iterator for Iter<'a, K, V> { } } #[stable(feature = "rust1", since = "1.0.0")] -impl<'a, K, V> ExactSizeIterator for Iter<'a, K, V> { +impl<K, V> ExactSizeIterator for Iter<'_, K, V> { #[inline] fn len(&self) -> usize { self.inner.len() @@ -2456,7 +2456,7 @@ impl<'a, K, V> ExactSizeIterator for Iter<'a, K, V> { } #[stable(feature = "fused", since = "1.26.0")] -impl<'a, K, V> FusedIterator for Iter<'a, K, V> {} +impl<K, V> FusedIterator for Iter<'_, K, V> {} #[stable(feature = "rust1", since = "1.0.0")] impl<'a, K, V> Iterator for IterMut<'a, K, V> { @@ -2472,17 +2472,17 @@ impl<'a, K, V> Iterator for IterMut<'a, K, V> { } } #[stable(feature = "rust1", since = "1.0.0")] -impl<'a, K, V> ExactSizeIterator for IterMut<'a, K, V> { +impl<K, V> ExactSizeIterator for IterMut<'_, K, V> { #[inline] fn len(&self) -> usize { self.inner.len() } } #[stable(feature = "fused", since = "1.26.0")] -impl<'a, K, V> FusedIterator for IterMut<'a, K, V> {} +impl<K, V> FusedIterator for IterMut<'_, K, V> {} #[stable(feature = "std_debug", since = "1.16.0")] -impl<'a, K, V> fmt::Debug for IterMut<'a, K, V> +impl<K, V> fmt::Debug for IterMut<'_, K, V> where K: fmt::Debug, V: fmt::Debug, { @@ -2539,14 +2539,14 @@ impl<'a, K, V> Iterator for Keys<'a, K, V> { } } #[stable(feature = "rust1", since = "1.0.0")] -impl<'a, K, V> ExactSizeIterator for Keys<'a, K, V> { +impl<K, V> ExactSizeIterator for Keys<'_, K, V> { #[inline] fn len(&self) -> usize { self.inner.len() } } #[stable(feature = "fused", since = "1.26.0")] -impl<'a, K, V> FusedIterator for Keys<'a, K, V> {} +impl<K, V> FusedIterator for Keys<'_, K, V> {} #[stable(feature = "rust1", since = "1.0.0")] impl<'a, K, V> Iterator for Values<'a, K, V> { @@ -2562,14 +2562,14 @@ impl<'a, K, V> Iterator for Values<'a, K, V> { } } #[stable(feature = "rust1", since = "1.0.0")] -impl<'a, K, V> ExactSizeIterator for Values<'a, K, V> { +impl<K, V> ExactSizeIterator for Values<'_, K, V> { #[inline] fn len(&self) -> usize { self.inner.len() } } #[stable(feature = "fused", since = "1.26.0")] -impl<'a, K, V> FusedIterator for Values<'a, K, V> {} +impl<K, V> FusedIterator for Values<'_, K, V> {} #[stable(feature = "map_values_mut", since = "1.10.0")] impl<'a, K, V> Iterator for ValuesMut<'a, K, V> { @@ -2585,17 +2585,17 @@ impl<'a, K, V> Iterator for ValuesMut<'a, K, V> { } } #[stable(feature = "map_values_mut", since = "1.10.0")] -impl<'a, K, V> ExactSizeIterator for ValuesMut<'a, K, V> { +impl<K, V> ExactSizeIterator for ValuesMut<'_, K, V> { #[inline] fn len(&self) -> usize { self.inner.len() } } #[stable(feature = "fused", since = "1.26.0")] -impl<'a, K, V> FusedIterator for ValuesMut<'a, K, V> {} +impl<K, V> FusedIterator for ValuesMut<'_, K, V> {} #[stable(feature = "std_debug", since = "1.16.0")] -impl<'a, K, V> fmt::Debug for ValuesMut<'a, K, V> +impl<K, V> fmt::Debug for ValuesMut<'_, K, V> where K: fmt::Debug, V: fmt::Debug, { @@ -2620,17 +2620,17 @@ impl<'a, K, V> Iterator for Drain<'a, K, V> { } } #[stable(feature = "drain", since = "1.6.0")] -impl<'a, K, V> ExactSizeIterator for Drain<'a, K, V> { +impl<K, V> ExactSizeIterator for Drain<'_, K, V> { #[inline] fn len(&self) -> usize { self.inner.len() } } #[stable(feature = "fused", since = "1.26.0")] -impl<'a, K, V> FusedIterator for Drain<'a, K, V> {} +impl<K, V> FusedIterator for Drain<'_, K, V> {} #[stable(feature = "std_debug", since = "1.16.0")] -impl<'a, K, V> fmt::Debug for Drain<'a, K, V> +impl<K, V> fmt::Debug for Drain<'_, K, V> where K: fmt::Debug, V: fmt::Debug, { diff --git a/src/libstd/collections/hash/set.rs b/src/libstd/collections/hash/set.rs index c55dd049ec6..808f5f4a4f8 100644 --- a/src/libstd/collections/hash/set.rs +++ b/src/libstd/collections/hash/set.rs @@ -1112,8 +1112,8 @@ impl<T, S> IntoIterator for HashSet<T, S> } #[stable(feature = "rust1", since = "1.0.0")] -impl<'a, K> Clone for Iter<'a, K> { - fn clone(&self) -> Iter<'a, K> { +impl<K> Clone for Iter<'_, K> { + fn clone(&self) -> Self { Iter { iter: self.iter.clone() } } } @@ -1129,16 +1129,16 @@ impl<'a, K> Iterator for Iter<'a, K> { } } #[stable(feature = "rust1", since = "1.0.0")] -impl<'a, K> ExactSizeIterator for Iter<'a, K> { +impl<K> ExactSizeIterator for Iter<'_, K> { fn len(&self) -> usize { self.iter.len() } } #[stable(feature = "fused", since = "1.26.0")] -impl<'a, K> FusedIterator for Iter<'a, K> {} +impl<K> FusedIterator for Iter<'_, K> {} #[stable(feature = "std_debug", since = "1.16.0")] -impl<'a, K: fmt::Debug> fmt::Debug for Iter<'a, K> { +impl<K: fmt::Debug> fmt::Debug for Iter<'_, K> { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { f.debug_list().entries(self.clone()).finish() } @@ -1187,16 +1187,16 @@ impl<'a, K> Iterator for Drain<'a, K> { } } #[stable(feature = "rust1", since = "1.0.0")] -impl<'a, K> ExactSizeIterator for Drain<'a, K> { +impl<K> ExactSizeIterator for Drain<'_, K> { fn len(&self) -> usize { self.iter.len() } } #[stable(feature = "fused", since = "1.26.0")] -impl<'a, K> FusedIterator for Drain<'a, K> {} +impl<K> FusedIterator for Drain<'_, K> {} #[stable(feature = "std_debug", since = "1.16.0")] -impl<'a, K: fmt::Debug> fmt::Debug for Drain<'a, K> { +impl<K: fmt::Debug> fmt::Debug for Drain<'_, K> { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let entries_iter = self.iter .inner @@ -1207,8 +1207,8 @@ impl<'a, K: fmt::Debug> fmt::Debug for Drain<'a, K> { } #[stable(feature = "rust1", since = "1.0.0")] -impl<'a, T, S> Clone for Intersection<'a, T, S> { - fn clone(&self) -> Intersection<'a, T, S> { +impl<T, S> Clone for Intersection<'_, T, S> { + fn clone(&self) -> Self { Intersection { iter: self.iter.clone(), ..*self } } } @@ -1236,7 +1236,7 @@ impl<'a, T, S> Iterator for Intersection<'a, T, S> } #[stable(feature = "std_debug", since = "1.16.0")] -impl<'a, T, S> fmt::Debug for Intersection<'a, T, S> +impl<T, S> fmt::Debug for Intersection<'_, T, S> where T: fmt::Debug + Eq + Hash, S: BuildHasher { @@ -1246,15 +1246,15 @@ impl<'a, T, S> fmt::Debug for Intersection<'a, T, S> } #[stable(feature = "fused", since = "1.26.0")] -impl<'a, T, S> FusedIterator for Intersection<'a, T, S> +impl<T, S> FusedIterator for Intersection<'_, T, S> where T: Eq + Hash, S: BuildHasher { } #[stable(feature = "rust1", since = "1.0.0")] -impl<'a, T, S> Clone for Difference<'a, T, S> { - fn clone(&self) -> Difference<'a, T, S> { +impl<T, S> Clone for Difference<'_, T, S> { + fn clone(&self) -> Self { Difference { iter: self.iter.clone(), ..*self } } } @@ -1282,14 +1282,14 @@ impl<'a, T, S> Iterator for Difference<'a, T, S> } #[stable(feature = "fused", since = "1.26.0")] -impl<'a, T, S> FusedIterator for Difference<'a, T, S> +impl<T, S> FusedIterator for Difference<'_, T, S> where T: Eq + Hash, S: BuildHasher { } #[stable(feature = "std_debug", since = "1.16.0")] -impl<'a, T, S> fmt::Debug for Difference<'a, T, S> +impl<T, S> fmt::Debug for Difference<'_, T, S> where T: fmt::Debug + Eq + Hash, S: BuildHasher { @@ -1299,8 +1299,8 @@ impl<'a, T, S> fmt::Debug for Difference<'a, T, S> } #[stable(feature = "rust1", since = "1.0.0")] -impl<'a, T, S> Clone for SymmetricDifference<'a, T, S> { - fn clone(&self) -> SymmetricDifference<'a, T, S> { +impl<T, S> Clone for SymmetricDifference<'_, T, S> { + fn clone(&self) -> Self { SymmetricDifference { iter: self.iter.clone() } } } @@ -1321,14 +1321,14 @@ impl<'a, T, S> Iterator for SymmetricDifference<'a, T, S> } #[stable(feature = "fused", since = "1.26.0")] -impl<'a, T, S> FusedIterator for SymmetricDifference<'a, T, S> +impl<T, S> FusedIterator for SymmetricDifference<'_, T, S> where T: Eq + Hash, S: BuildHasher { } #[stable(feature = "std_debug", since = "1.16.0")] -impl<'a, T, S> fmt::Debug for SymmetricDifference<'a, T, S> +impl<T, S> fmt::Debug for SymmetricDifference<'_, T, S> where T: fmt::Debug + Eq + Hash, S: BuildHasher { @@ -1338,21 +1338,21 @@ impl<'a, T, S> fmt::Debug for SymmetricDifference<'a, T, S> } #[stable(feature = "rust1", since = "1.0.0")] -impl<'a, T, S> Clone for Union<'a, T, S> { - fn clone(&self) -> Union<'a, T, S> { +impl<T, S> Clone for Union<'_, T, S> { + fn clone(&self) -> Self { Union { iter: self.iter.clone() } } } #[stable(feature = "fused", since = "1.26.0")] -impl<'a, T, S> FusedIterator for Union<'a, T, S> +impl<T, S> FusedIterator for Union<'_, T, S> where T: Eq + Hash, S: BuildHasher { } #[stable(feature = "std_debug", since = "1.16.0")] -impl<'a, T, S> fmt::Debug for Union<'a, T, S> +impl<T, S> fmt::Debug for Union<'_, T, S> where T: fmt::Debug + Eq + Hash, S: BuildHasher { diff --git a/src/libstd/collections/hash/table.rs b/src/libstd/collections/hash/table.rs index 28beb80612c..d5b75b22499 100644 --- a/src/libstd/collections/hash/table.rs +++ b/src/libstd/collections/hash/table.rs @@ -296,7 +296,7 @@ pub trait Put<K, V> { } -impl<'t, K, V> Put<K, V> for &'t mut RawTable<K, V> { +impl<K, V> Put<K, V> for &mut RawTable<K, V> { unsafe fn borrow_table_mut(&mut self) -> &mut RawTable<K, V> { *self } @@ -865,8 +865,8 @@ struct RawBuckets<'a, K, V> { } // FIXME(#26925) Remove in favor of `#[derive(Clone)]` -impl<'a, K, V> Clone for RawBuckets<'a, K, V> { - fn clone(&self) -> RawBuckets<'a, K, V> { +impl<K, V> Clone for RawBuckets<'_, K, V> { + fn clone(&self) -> Self { RawBuckets { raw: self.raw, elems_left: self.elems_left, @@ -901,7 +901,7 @@ impl<'a, K, V> Iterator for RawBuckets<'a, K, V> { } } -impl<'a, K, V> ExactSizeIterator for RawBuckets<'a, K, V> { +impl<K, V> ExactSizeIterator for RawBuckets<'_, K, V> { fn len(&self) -> usize { self.elems_left } @@ -912,12 +912,12 @@ pub struct Iter<'a, K: 'a, V: 'a> { iter: RawBuckets<'a, K, V>, } -unsafe impl<'a, K: Sync, V: Sync> Sync for Iter<'a, K, V> {} -unsafe impl<'a, K: Sync, V: Sync> Send for Iter<'a, K, V> {} +unsafe impl<K: Sync, V: Sync> Sync for Iter<'_, K, V> {} +unsafe impl<K: Sync, V: Sync> Send for Iter<'_, K, V> {} // FIXME(#26925) Remove in favor of `#[derive(Clone)]` -impl<'a, K, V> Clone for Iter<'a, K, V> { - fn clone(&self) -> Iter<'a, K, V> { +impl<K, V> Clone for Iter<'_, K, V> { + fn clone(&self) -> Self { Iter { iter: self.iter.clone(), } @@ -931,10 +931,10 @@ pub struct IterMut<'a, K: 'a, V: 'a> { _marker: marker::PhantomData<&'a mut V>, } -unsafe impl<'a, K: Sync, V: Sync> Sync for IterMut<'a, K, V> {} +unsafe impl<K: Sync, V: Sync> Sync for IterMut<'_, K, V> {} // Both K: Sync and K: Send are correct for IterMut's Send impl, // but Send is the more useful bound -unsafe impl<'a, K: Send, V: Send> Send for IterMut<'a, K, V> {} +unsafe impl<K: Send, V: Send> Send for IterMut<'_, K, V> {} impl<'a, K: 'a, V: 'a> IterMut<'a, K, V> { pub fn iter(&self) -> Iter<K, V> { @@ -968,8 +968,8 @@ pub struct Drain<'a, K: 'a, V: 'a> { marker: marker::PhantomData<&'a RawTable<K, V>>, } -unsafe impl<'a, K: Sync, V: Sync> Sync for Drain<'a, K, V> {} -unsafe impl<'a, K: Send, V: Send> Send for Drain<'a, K, V> {} +unsafe impl<K: Sync, V: Sync> Sync for Drain<'_, K, V> {} +unsafe impl<K: Send, V: Send> Send for Drain<'_, K, V> {} impl<'a, K, V> Drain<'a, K, V> { pub fn iter(&self) -> Iter<K, V> { @@ -994,7 +994,7 @@ impl<'a, K, V> Iterator for Iter<'a, K, V> { } } -impl<'a, K, V> ExactSizeIterator for Iter<'a, K, V> { +impl<K, V> ExactSizeIterator for Iter<'_, K, V> { fn len(&self) -> usize { self.iter.len() } @@ -1015,7 +1015,7 @@ impl<'a, K, V> Iterator for IterMut<'a, K, V> { } } -impl<'a, K, V> ExactSizeIterator for IterMut<'a, K, V> { +impl<K, V> ExactSizeIterator for IterMut<'_, K, V> { fn len(&self) -> usize { self.iter.len() } @@ -1064,13 +1064,13 @@ impl<'a, K, V> Iterator for Drain<'a, K, V> { } } -impl<'a, K, V> ExactSizeIterator for Drain<'a, K, V> { +impl<K, V> ExactSizeIterator for Drain<'_, K, V> { fn len(&self) -> usize { self.iter.len() } } -impl<'a, K: 'a, V: 'a> Drop for Drain<'a, K, V> { +impl<K, V> Drop for Drain<'_, K, V> { fn drop(&mut self) { self.for_each(drop); } |
