@@ -1150,19 +1150,7 @@ impl<A: Step> Iterator for ops::RangeInclusive<A> {
1150
1150
self . spec_try_fold ( init, f)
1151
1151
}
1152
1152
1153
- #[ inline]
1154
- fn fold < B , F > ( mut self , init : B , f : F ) -> B
1155
- where
1156
- Self : Sized ,
1157
- F : FnMut ( B , Self :: Item ) -> B ,
1158
- {
1159
- #[ inline]
1160
- fn ok < B , T > ( mut f : impl FnMut ( B , T ) -> B ) -> impl FnMut ( B , T ) -> Result < B , !> {
1161
- move |acc, x| Ok ( f ( acc, x) )
1162
- }
1163
-
1164
- self . try_fold ( init, ok ( f) ) . unwrap ( )
1165
- }
1153
+ impl_fold_via_try_fold ! { fold -> try_fold }
1166
1154
1167
1155
#[ inline]
1168
1156
fn last ( mut self ) -> Option < A > {
@@ -1230,19 +1218,7 @@ impl<A: Step> DoubleEndedIterator for ops::RangeInclusive<A> {
1230
1218
self . spec_try_rfold ( init, f)
1231
1219
}
1232
1220
1233
- #[ inline]
1234
- fn rfold < B , F > ( mut self , init : B , f : F ) -> B
1235
- where
1236
- Self : Sized ,
1237
- F : FnMut ( B , Self :: Item ) -> B ,
1238
- {
1239
- #[ inline]
1240
- fn ok < B , T > ( mut f : impl FnMut ( B , T ) -> B ) -> impl FnMut ( B , T ) -> Result < B , !> {
1241
- move |acc, x| Ok ( f ( acc, x) )
1242
- }
1243
-
1244
- self . try_rfold ( init, ok ( f) ) . unwrap ( )
1245
- }
1221
+ impl_fold_via_try_fold ! { rfold -> try_rfold }
1246
1222
}
1247
1223
1248
1224
// Safety: See above implementation for `ops::Range<A>`
0 commit comments