Rollup merge of #89086 - WaffleLapkin:stabilize_iter_map_while, r=kennytm

Stabilize `Iterator::map_while`

Per the FCP: https://github.com/rust-lang/rust/issues/68537#issuecomment-922385035

This PR stabilizes `Iterator::map_while` and `iter::MapWhile` in Rust 1.57.
This commit is contained in:
the8472 2021-09-21 22:54:01 +02:00 committed by GitHub
commit d7de8d2b53
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 6 additions and 12 deletions

View file

@ -18,7 +18,6 @@
#![feature(extend_one)] #![feature(extend_one)]
#![feature(hash_raw_entry)] #![feature(hash_raw_entry)]
#![feature(in_band_lifetimes)] #![feature(in_band_lifetimes)]
#![feature(iter_map_while)]
#![feature(maybe_uninit_uninit_array)] #![feature(maybe_uninit_uninit_array)]
#![feature(min_specialization)] #![feature(min_specialization)]
#![feature(never_type)] #![feature(never_type)]

View file

@ -18,7 +18,6 @@
#![feature(binary_heap_retain)] #![feature(binary_heap_retain)]
#![feature(binary_heap_as_slice)] #![feature(binary_heap_as_slice)]
#![feature(inplace_iteration)] #![feature(inplace_iteration)]
#![feature(iter_map_while)]
#![feature(slice_group_by)] #![feature(slice_group_by)]
#![feature(slice_partition_dedup)] #![feature(slice_partition_dedup)]
#![feature(vec_spare_capacity)] #![feature(vec_spare_capacity)]

View file

@ -10,7 +10,7 @@ use crate::ops::{ControlFlow, Try};
/// [`map_while`]: Iterator::map_while /// [`map_while`]: Iterator::map_while
/// [`Iterator`]: trait.Iterator.html /// [`Iterator`]: trait.Iterator.html
#[must_use = "iterators are lazy and do nothing unless consumed"] #[must_use = "iterators are lazy and do nothing unless consumed"]
#[unstable(feature = "iter_map_while", reason = "recently added", issue = "68537")] #[stable(feature = "iter_map_while", since = "1.57.0")]
#[derive(Clone)] #[derive(Clone)]
pub struct MapWhile<I, P> { pub struct MapWhile<I, P> {
iter: I, iter: I,
@ -23,14 +23,14 @@ impl<I, P> MapWhile<I, P> {
} }
} }
#[unstable(feature = "iter_map_while", reason = "recently added", issue = "68537")] #[stable(feature = "iter_map_while", since = "1.57.0")]
impl<I: fmt::Debug, P> fmt::Debug for MapWhile<I, P> { impl<I: fmt::Debug, P> fmt::Debug for MapWhile<I, P> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("MapWhile").field("iter", &self.iter).finish() f.debug_struct("MapWhile").field("iter", &self.iter).finish()
} }
} }
#[unstable(feature = "iter_map_while", reason = "recently added", issue = "68537")] #[stable(feature = "iter_map_while", since = "1.57.0")]
impl<B, I: Iterator, P> Iterator for MapWhile<I, P> impl<B, I: Iterator, P> Iterator for MapWhile<I, P>
where where
P: FnMut(I::Item) -> Option<B>, P: FnMut(I::Item) -> Option<B>,

View file

@ -45,7 +45,7 @@ pub use self::copied::Copied;
#[stable(feature = "iter_intersperse", since = "1.56.0")] #[stable(feature = "iter_intersperse", since = "1.56.0")]
pub use self::intersperse::{Intersperse, IntersperseWith}; pub use self::intersperse::{Intersperse, IntersperseWith};
#[unstable(feature = "iter_map_while", reason = "recently added", issue = "68537")] #[stable(feature = "iter_map_while", since = "1.57.0")]
pub use self::map_while::MapWhile; pub use self::map_while::MapWhile;
#[unstable(feature = "trusted_random_access", issue = "none")] #[unstable(feature = "trusted_random_access", issue = "none")]

View file

@ -399,7 +399,7 @@ pub use self::adapters::Cloned;
pub use self::adapters::Copied; pub use self::adapters::Copied;
#[stable(feature = "iterator_flatten", since = "1.29.0")] #[stable(feature = "iterator_flatten", since = "1.29.0")]
pub use self::adapters::Flatten; pub use self::adapters::Flatten;
#[unstable(feature = "iter_map_while", reason = "recently added", issue = "68537")] #[stable(feature = "iter_map_while", since = "1.57.0")]
pub use self::adapters::MapWhile; pub use self::adapters::MapWhile;
#[unstable(feature = "inplace_iteration", issue = "none")] #[unstable(feature = "inplace_iteration", issue = "none")]
pub use self::adapters::SourceIter; pub use self::adapters::SourceIter;

View file

@ -1116,7 +1116,6 @@ pub trait Iterator {
/// Basic usage: /// Basic usage:
/// ///
/// ``` /// ```
/// #![feature(iter_map_while)]
/// let a = [-1i32, 4, 0, 1]; /// let a = [-1i32, 4, 0, 1];
/// ///
/// let mut iter = a.iter().map_while(|x| 16i32.checked_div(*x)); /// let mut iter = a.iter().map_while(|x| 16i32.checked_div(*x));
@ -1147,7 +1146,6 @@ pub trait Iterator {
/// Stopping after an initial [`None`]: /// Stopping after an initial [`None`]:
/// ///
/// ``` /// ```
/// #![feature(iter_map_while)]
/// use std::convert::TryFrom; /// use std::convert::TryFrom;
/// ///
/// let a = [0, 1, 2, -3, 4, 5, -6]; /// let a = [0, 1, 2, -3, 4, 5, -6];
@ -1165,7 +1163,6 @@ pub trait Iterator {
/// removed: /// removed:
/// ///
/// ``` /// ```
/// #![feature(iter_map_while)]
/// use std::convert::TryFrom; /// use std::convert::TryFrom;
/// ///
/// let a = [1, 2, -3, 4]; /// let a = [1, 2, -3, 4];
@ -1191,7 +1188,7 @@ pub trait Iterator {
/// ///
/// [`fuse`]: Iterator::fuse /// [`fuse`]: Iterator::fuse
#[inline] #[inline]
#[unstable(feature = "iter_map_while", reason = "recently added", issue = "68537")] #[stable(feature = "iter_map_while", since = "1.57.0")]
fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P> fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
where where
Self: Sized, Self: Sized,

View file

@ -50,7 +50,6 @@
#![feature(iter_partition_in_place)] #![feature(iter_partition_in_place)]
#![feature(iter_is_partitioned)] #![feature(iter_is_partitioned)]
#![feature(iter_order_by)] #![feature(iter_order_by)]
#![feature(iter_map_while)]
#![feature(const_mut_refs)] #![feature(const_mut_refs)]
#![feature(const_pin)] #![feature(const_pin)]
#![feature(const_slice_from_raw_parts)] #![feature(const_slice_from_raw_parts)]