@@ -1835,6 +1835,15 @@ pub struct Iter<'a, T> {
1835
1835
marker : PhantomData < & ' a T > ,
1836
1836
}
1837
1837
1838
+ impl < ' a , T > Clone for Iter < ' a , T > {
1839
+ #[ cfg_attr( feature = "inline-more" , inline) ]
1840
+ fn clone ( & self ) -> Self {
1841
+ Iter {
1842
+ inner : self . inner . clone ( ) ,
1843
+ marker : PhantomData ,
1844
+ }
1845
+ }
1846
+ }
1838
1847
impl < ' a , T > Default for Iter < ' a , T > {
1839
1848
#[ cfg_attr( feature = "inline-more" , inline) ]
1840
1849
fn default ( ) -> Self {
@@ -1844,6 +1853,11 @@ impl<'a, T> Default for Iter<'a, T> {
1844
1853
}
1845
1854
}
1846
1855
}
1856
+ impl < ' a , T : fmt:: Debug > fmt:: Debug for Iter < ' a , T > {
1857
+ fn fmt ( & self , f : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
1858
+ f. debug_list ( ) . entries ( self . clone ( ) ) . finish ( )
1859
+ }
1860
+ }
1847
1861
impl < ' a , T > Iterator for Iter < ' a , T > {
1848
1862
type Item = & ' a T ;
1849
1863
@@ -1889,6 +1903,16 @@ pub struct IterMut<'a, T> {
1889
1903
inner : RawIter < T > ,
1890
1904
marker : PhantomData < & ' a mut T > ,
1891
1905
}
1906
+ impl < ' a , T > IterMut < ' a , T > {
1907
+ /// Borrows as a non-mutable iterator.
1908
+ #[ cfg_attr( feature = "inline-more" , inline) ]
1909
+ pub fn iter ( & self ) -> Iter < ' _ , T > {
1910
+ Iter {
1911
+ inner : self . inner . clone ( ) ,
1912
+ marker : PhantomData ,
1913
+ }
1914
+ }
1915
+ }
1892
1916
1893
1917
impl < ' a , T > Default for IterMut < ' a , T > {
1894
1918
#[ cfg_attr( feature = "inline-more" , inline) ]
@@ -1899,6 +1923,11 @@ impl<'a, T> Default for IterMut<'a, T> {
1899
1923
}
1900
1924
}
1901
1925
}
1926
+ impl < ' a , T : fmt:: Debug > fmt:: Debug for IterMut < ' a , T > {
1927
+ fn fmt ( & self , f : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
1928
+ f. debug_list ( ) . entries ( self . iter ( ) . clone ( ) ) . finish ( )
1929
+ }
1930
+ }
1902
1931
impl < ' a , T > Iterator for IterMut < ' a , T > {
1903
1932
type Item = & ' a mut T ;
1904
1933
@@ -1942,12 +1971,32 @@ impl<T> FusedIterator for IterMut<'_, T> {}
1942
1971
/// [`into_iter`]: struct.HashTable.html#method.into_iter
1943
1972
/// [`HashTable`]: struct.HashTable.html
1944
1973
/// [`IntoIterator`]: https://doc.rust-lang.org/core/iter/trait.IntoIterator.html
1974
+ #[ derive( Clone ) ]
1945
1975
pub struct IntoIter < T , A = Global >
1946
1976
where
1947
1977
A : Allocator ,
1948
1978
{
1949
1979
inner : RawIntoIter < T , A > ,
1950
1980
}
1981
+ impl < T , A : Allocator > IntoIter < T , A > {
1982
+ /// Borrows the remaining elements as an iterator.
1983
+ #[ cfg_attr( feature = "inline-more" , inline) ]
1984
+ pub fn iter ( & self ) -> Iter < ' _ , T > {
1985
+ Iter {
1986
+ inner : self . inner . iter ( ) ,
1987
+ marker : PhantomData ,
1988
+ }
1989
+ }
1990
+
1991
+ /// Borrows the remaining elements as a mutable iterator.
1992
+ #[ cfg_attr( feature = "inline-more" , inline) ]
1993
+ pub fn iter_mut ( & mut self ) -> IterMut < ' _ , T > {
1994
+ IterMut {
1995
+ inner : self . inner . iter ( ) ,
1996
+ marker : PhantomData ,
1997
+ }
1998
+ }
1999
+ }
1951
2000
1952
2001
impl < T , A : Allocator > Default for IntoIter < T , A > {
1953
2002
#[ cfg_attr( feature = "inline-more" , inline) ]
@@ -1957,6 +2006,11 @@ impl<T, A: Allocator> Default for IntoIter<T, A> {
1957
2006
}
1958
2007
}
1959
2008
}
2009
+ impl < ' a , T : fmt:: Debug , A : Allocator > fmt:: Debug for IntoIter < T , A > {
2010
+ fn fmt ( & self , f : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
2011
+ f. debug_list ( ) . entries ( self . iter ( ) . clone ( ) ) . finish ( )
2012
+ }
2013
+ }
1960
2014
impl < T , A > Iterator for IntoIter < T , A >
1961
2015
where
1962
2016
A : Allocator ,
0 commit comments