Rollup merge of #51511 - Centril:feature/stabilize_iterator_flatten, r=SimonSapin
Stabilize Iterator::flatten in 1.29, fixes #48213. This PR stabilizes [`Iterator::flatten`](https://doc.rust-lang.org/nightly/std/iter/trait.Iterator.html#method.flatten) in *version 1.29* (1.28 goes to beta in 10 days, I don't think there's enough time to land it in that time, but let's see...). Tracking issue is: #48213. cc @bluss re. itertools. r? @SimonSapin ping @pietroalbini -- let's do a crater run when this passes CI :)
This commit is contained in:
commit
0f8343830b
src/libcore
@ -1036,8 +1036,6 @@ pub trait Iterator {
|
||||
/// Basic usage:
|
||||
///
|
||||
/// ```
|
||||
/// #![feature(iterator_flatten)]
|
||||
///
|
||||
/// let data = vec![vec![1, 2, 3, 4], vec![5, 6]];
|
||||
/// let flattened = data.into_iter().flatten().collect::<Vec<u8>>();
|
||||
/// assert_eq!(flattened, &[1, 2, 3, 4, 5, 6]);
|
||||
@ -1046,8 +1044,6 @@ pub trait Iterator {
|
||||
/// Mapping and then flattening:
|
||||
///
|
||||
/// ```
|
||||
/// #![feature(iterator_flatten)]
|
||||
///
|
||||
/// let words = ["alpha", "beta", "gamma"];
|
||||
///
|
||||
/// // chars() returns an iterator
|
||||
@ -1074,8 +1070,6 @@ pub trait Iterator {
|
||||
/// Flattening once only removes one level of nesting:
|
||||
///
|
||||
/// ```
|
||||
/// #![feature(iterator_flatten)]
|
||||
///
|
||||
/// let d3 = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]];
|
||||
///
|
||||
/// let d2 = d3.iter().flatten().collect::<Vec<_>>();
|
||||
@ -1093,7 +1087,7 @@ pub trait Iterator {
|
||||
///
|
||||
/// [`flat_map()`]: #method.flat_map
|
||||
#[inline]
|
||||
#[unstable(feature = "iterator_flatten", issue = "48213")]
|
||||
#[stable(feature = "iterator_flatten", since = "1.29")]
|
||||
fn flatten(self) -> Flatten<Self>
|
||||
where Self: Sized, Self::Item: IntoIterator {
|
||||
Flatten { inner: flatten_compat(self) }
|
||||
|
@ -2575,13 +2575,13 @@ impl<I, U, F> FusedIterator for FlatMap<I, U, F>
|
||||
/// [`flatten`]: trait.Iterator.html#method.flatten
|
||||
/// [`Iterator`]: trait.Iterator.html
|
||||
#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
|
||||
#[unstable(feature = "iterator_flatten", issue = "48213")]
|
||||
#[stable(feature = "iterator_flatten", since = "1.29")]
|
||||
pub struct Flatten<I: Iterator>
|
||||
where I::Item: IntoIterator {
|
||||
inner: FlattenCompat<I, <I::Item as IntoIterator>::IntoIter>,
|
||||
}
|
||||
|
||||
#[unstable(feature = "iterator_flatten", issue = "48213")]
|
||||
#[stable(feature = "iterator_flatten", since = "1.29")]
|
||||
impl<I, U> fmt::Debug for Flatten<I>
|
||||
where I: Iterator + fmt::Debug, U: Iterator + fmt::Debug,
|
||||
I::Item: IntoIterator<IntoIter = U, Item = U::Item>,
|
||||
@ -2591,7 +2591,7 @@ impl<I, U> fmt::Debug for Flatten<I>
|
||||
}
|
||||
}
|
||||
|
||||
#[unstable(feature = "iterator_flatten", issue = "48213")]
|
||||
#[stable(feature = "iterator_flatten", since = "1.29")]
|
||||
impl<I, U> Clone for Flatten<I>
|
||||
where I: Iterator + Clone, U: Iterator + Clone,
|
||||
I::Item: IntoIterator<IntoIter = U, Item = U::Item>,
|
||||
@ -2599,7 +2599,7 @@ impl<I, U> Clone for Flatten<I>
|
||||
fn clone(&self) -> Self { Flatten { inner: self.inner.clone() } }
|
||||
}
|
||||
|
||||
#[unstable(feature = "iterator_flatten", issue = "48213")]
|
||||
#[stable(feature = "iterator_flatten", since = "1.29")]
|
||||
impl<I, U> Iterator for Flatten<I>
|
||||
where I: Iterator, U: Iterator,
|
||||
I::Item: IntoIterator<IntoIter = U, Item = U::Item>
|
||||
@ -2627,7 +2627,7 @@ impl<I, U> Iterator for Flatten<I>
|
||||
}
|
||||
}
|
||||
|
||||
#[unstable(feature = "iterator_flatten", issue = "48213")]
|
||||
#[stable(feature = "iterator_flatten", since = "1.29")]
|
||||
impl<I, U> DoubleEndedIterator for Flatten<I>
|
||||
where I: DoubleEndedIterator, U: DoubleEndedIterator,
|
||||
I::Item: IntoIterator<IntoIter = U, Item = U::Item>
|
||||
@ -2650,7 +2650,7 @@ impl<I, U> DoubleEndedIterator for Flatten<I>
|
||||
}
|
||||
}
|
||||
|
||||
#[unstable(feature = "iterator_flatten", issue = "48213")]
|
||||
#[stable(feature = "iterator_flatten", since = "1.29")]
|
||||
impl<I, U> FusedIterator for Flatten<I>
|
||||
where I: FusedIterator, U: Iterator,
|
||||
I::Item: IntoIterator<IntoIter = U, Item = U::Item> {}
|
||||
|
@ -89,7 +89,6 @@
|
||||
#![feature(extern_types)]
|
||||
#![feature(fundamental)]
|
||||
#![feature(intrinsics)]
|
||||
#![feature(iterator_flatten)]
|
||||
#![feature(lang_items)]
|
||||
#![feature(link_llvm_intrinsics)]
|
||||
#![feature(never_type)]
|
||||
|
@ -23,7 +23,6 @@
|
||||
#![feature(flt2dec)]
|
||||
#![feature(fmt_internals)]
|
||||
#![feature(hashmap_internals)]
|
||||
#![feature(iterator_flatten)]
|
||||
#![feature(pattern)]
|
||||
#![feature(range_is_empty)]
|
||||
#![feature(raw)]
|
||||
|
Loading…
x
Reference in New Issue
Block a user