@@ -1973,6 +1973,14 @@ impl<'a, T> DoubleEndedIterator for Iter<'a, T> {
1973
1973
self . head = wrap_index ( self . head . wrapping_sub ( 1 ) , self . ring . len ( ) ) ;
1974
1974
unsafe { Some ( self . ring . get_unchecked ( self . head ) ) }
1975
1975
}
1976
+
1977
+ fn rfold < Acc , F > ( self , mut accum : Acc , mut f : F ) -> Acc
1978
+ where F : FnMut ( Acc , Self :: Item ) -> Acc
1979
+ {
1980
+ let ( front, back) = RingSlices :: ring_slices ( self . ring , self . head , self . tail ) ;
1981
+ accum = back. iter ( ) . rfold ( accum, & mut f) ;
1982
+ front. iter ( ) . rfold ( accum, & mut f)
1983
+ }
1976
1984
}
1977
1985
1978
1986
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
@@ -2058,6 +2066,14 @@ impl<'a, T> DoubleEndedIterator for IterMut<'a, T> {
2058
2066
Some ( & mut * ( elem as * mut _ ) )
2059
2067
}
2060
2068
}
2069
+
2070
+ fn rfold < Acc , F > ( self , mut accum : Acc , mut f : F ) -> Acc
2071
+ where F : FnMut ( Acc , Self :: Item ) -> Acc
2072
+ {
2073
+ let ( front, back) = RingSlices :: ring_slices ( self . ring , self . head , self . tail ) ;
2074
+ accum = back. iter_mut ( ) . rfold ( accum, & mut f) ;
2075
+ front. iter_mut ( ) . rfold ( accum, & mut f)
2076
+ }
2061
2077
}
2062
2078
2063
2079
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
0 commit comments