Skip to content

Commit dd2ec6a

Browse files
authored
Rollup merge of rust-lang#49607 - cuviper:stable-iter-1.27, r=alexcrichton
Stabilize iterator methods in 1.27 - Closes rust-lang#39480, feature `iter_rfind` - `DoubleEndedIterator::rfind` - Closes rust-lang#44705, feature `iter_rfold` - `DoubleEndedIterator::rfold` - Closes rust-lang#45594, feature `iterator_try_fold` - `Iterator::try_fold` - `Iterator::try_for_each` - `DoubleEndedIterator::try_rfold`
2 parents 52fd162 + 9db63bb commit dd2ec6a

File tree

4 files changed

+6
-21
lines changed

4 files changed

+6
-21
lines changed

src/liballoc/lib.rs

-1
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,6 @@
9999
#![feature(fundamental)]
100100
#![feature(generic_param_attrs)]
101101
#![cfg_attr(stage0, feature(i128_type))]
102-
#![feature(iter_rfold)]
103102
#![feature(lang_items)]
104103
#![feature(needs_allocator)]
105104
#![feature(nonzero)]

src/libcore/iter/iterator.rs

+2-5
Original file line numberDiff line numberDiff line change
@@ -1447,7 +1447,6 @@ pub trait Iterator {
14471447
/// Basic usage:
14481448
///
14491449
/// ```
1450-
/// #![feature(iterator_try_fold)]
14511450
/// let a = [1, 2, 3];
14521451
///
14531452
/// // the checked sum of all of the elements of the array
@@ -1459,7 +1458,6 @@ pub trait Iterator {
14591458
/// Short-circuiting:
14601459
///
14611460
/// ```
1462-
/// #![feature(iterator_try_fold)]
14631461
/// let a = [10, 20, 30, 100, 40, 50];
14641462
/// let mut it = a.iter();
14651463
///
@@ -1473,7 +1471,7 @@ pub trait Iterator {
14731471
/// assert_eq!(it.next(), Some(&40));
14741472
/// ```
14751473
#[inline]
1476-
#[unstable(feature = "iterator_try_fold", issue = "45594")]
1474+
#[stable(feature = "iterator_try_fold", since = "1.27.0")]
14771475
fn try_fold<B, F, R>(&mut self, init: B, mut f: F) -> R where
14781476
Self: Sized, F: FnMut(B, Self::Item) -> R, R: Try<Ok=B>
14791477
{
@@ -1496,7 +1494,6 @@ pub trait Iterator {
14961494
/// # Examples
14971495
///
14981496
/// ```
1499-
/// #![feature(iterator_try_fold)]
15001497
/// use std::fs::rename;
15011498
/// use std::io::{stdout, Write};
15021499
/// use std::path::Path;
@@ -1513,7 +1510,7 @@ pub trait Iterator {
15131510
/// assert_eq!(it.next(), Some("stale_bread.json"));
15141511
/// ```
15151512
#[inline]
1516-
#[unstable(feature = "iterator_try_fold", issue = "45594")]
1513+
#[stable(feature = "iterator_try_fold", since = "1.27.0")]
15171514
fn try_for_each<F, R>(&mut self, mut f: F) -> R where
15181515
Self: Sized, F: FnMut(Self::Item) -> R, R: Try<Ok=()>
15191516
{

src/libcore/iter/traits.rs

+4-12
Original file line numberDiff line numberDiff line change
@@ -427,7 +427,6 @@ pub trait DoubleEndedIterator: Iterator {
427427
/// Basic usage:
428428
///
429429
/// ```
430-
/// #![feature(iterator_try_fold)]
431430
/// let a = ["1", "2", "3"];
432431
/// let sum = a.iter()
433432
/// .map(|&s| s.parse::<i32>())
@@ -438,7 +437,6 @@ pub trait DoubleEndedIterator: Iterator {
438437
/// Short-circuiting:
439438
///
440439
/// ```
441-
/// #![feature(iterator_try_fold)]
442440
/// let a = ["1", "rust", "3"];
443441
/// let mut it = a.iter();
444442
/// let sum = it
@@ -452,7 +450,7 @@ pub trait DoubleEndedIterator: Iterator {
452450
/// assert_eq!(it.next_back(), Some(&"1"));
453451
/// ```
454452
#[inline]
455-
#[unstable(feature = "iterator_try_fold", issue = "45594")]
453+
#[stable(feature = "iterator_try_fold", since = "1.27.0")]
456454
fn try_rfold<B, F, R>(&mut self, init: B, mut f: F) -> R where
457455
Self: Sized, F: FnMut(B, Self::Item) -> R, R: Try<Ok=B>
458456
{
@@ -491,7 +489,6 @@ pub trait DoubleEndedIterator: Iterator {
491489
/// Basic usage:
492490
///
493491
/// ```
494-
/// #![feature(iter_rfold)]
495492
/// let a = [1, 2, 3];
496493
///
497494
/// // the sum of all of the elements of a
@@ -505,7 +502,6 @@ pub trait DoubleEndedIterator: Iterator {
505502
/// and continuing with each element from the back until the front:
506503
///
507504
/// ```
508-
/// #![feature(iter_rfold)]
509505
/// let numbers = [1, 2, 3, 4, 5];
510506
///
511507
/// let zero = "0".to_string();
@@ -517,14 +513,14 @@ pub trait DoubleEndedIterator: Iterator {
517513
/// assert_eq!(result, "(1 + (2 + (3 + (4 + (5 + 0)))))");
518514
/// ```
519515
#[inline]
520-
#[unstable(feature = "iter_rfold", issue = "44705")]
516+
#[stable(feature = "iter_rfold", since = "1.27.0")]
521517
fn rfold<B, F>(mut self, accum: B, mut f: F) -> B where
522518
Self: Sized, F: FnMut(B, Self::Item) -> B,
523519
{
524520
self.try_rfold(accum, move |acc, x| AlwaysOk(f(acc, x))).0
525521
}
526522

527-
/// Searches for an element of an iterator from the right that satisfies a predicate.
523+
/// Searches for an element of an iterator from the back that satisfies a predicate.
528524
///
529525
/// `rfind()` takes a closure that returns `true` or `false`. It applies
530526
/// this closure to each element of the iterator, starting at the end, and if any
@@ -547,8 +543,6 @@ pub trait DoubleEndedIterator: Iterator {
547543
/// Basic usage:
548544
///
549545
/// ```
550-
/// #![feature(iter_rfind)]
551-
///
552546
/// let a = [1, 2, 3];
553547
///
554548
/// assert_eq!(a.iter().rfind(|&&x| x == 2), Some(&2));
@@ -559,8 +553,6 @@ pub trait DoubleEndedIterator: Iterator {
559553
/// Stopping at the first `true`:
560554
///
561555
/// ```
562-
/// #![feature(iter_rfind)]
563-
///
564556
/// let a = [1, 2, 3];
565557
///
566558
/// let mut iter = a.iter();
@@ -571,7 +563,7 @@ pub trait DoubleEndedIterator: Iterator {
571563
/// assert_eq!(iter.next_back(), Some(&1));
572564
/// ```
573565
#[inline]
574-
#[unstable(feature = "iter_rfind", issue = "39480")]
566+
#[stable(feature = "iter_rfind", since = "1.27.0")]
575567
fn rfind<P>(&mut self, mut predicate: P) -> Option<Self::Item> where
576568
Self: Sized,
577569
P: FnMut(&Self::Item) -> bool

src/libcore/tests/lib.rs

-3
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,8 @@
2525
#![feature(iterator_step_by)]
2626
#![cfg_attr(stage0, feature(i128_type))]
2727
#![cfg_attr(stage0, feature(inclusive_range_syntax))]
28-
#![feature(iterator_try_fold)]
2928
#![feature(iterator_flatten)]
3029
#![cfg_attr(stage0, feature(conservative_impl_trait))]
31-
#![feature(iter_rfind)]
32-
#![feature(iter_rfold)]
3330
#![feature(iterator_repeat_with)]
3431
#![feature(nonzero)]
3532
#![feature(pattern)]

0 commit comments

Comments
 (0)