未验证 提交 8e3493d4 编写于 作者: K kennytm

Rollup merge of #47463 - bluss:fused-iterator, r=alexcrichton

Stabilize FusedIterator

FusedIterator is a marker trait that promises that the implementing
iterator continues to return `None` from `.next()` once it has returned
`None` once (and/or `.next_back()`, if implemented).

The effects of FusedIterator are already widely available through
`.fuse()`, but with stable `FusedIterator`, stable Rust users can
implement this trait for their iterators when appropriate.

Closes #35602
...@@ -964,7 +964,7 @@ fn is_empty(&self) -> bool { ...@@ -964,7 +964,7 @@ fn is_empty(&self) -> bool {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, T> FusedIterator for Iter<'a, T> {} impl<'a, T> FusedIterator for Iter<'a, T> {}
/// An owning iterator over the elements of a `BinaryHeap`. /// An owning iterator over the elements of a `BinaryHeap`.
...@@ -1019,7 +1019,7 @@ fn is_empty(&self) -> bool { ...@@ -1019,7 +1019,7 @@ fn is_empty(&self) -> bool {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<T> FusedIterator for IntoIter<T> {} impl<T> FusedIterator for IntoIter<T> {}
/// A draining iterator over the elements of a `BinaryHeap`. /// A draining iterator over the elements of a `BinaryHeap`.
...@@ -1065,7 +1065,7 @@ fn is_empty(&self) -> bool { ...@@ -1065,7 +1065,7 @@ fn is_empty(&self) -> bool {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, T: 'a> FusedIterator for Drain<'a, T> {} impl<'a, T: 'a> FusedIterator for Drain<'a, T> {}
#[stable(feature = "binary_heap_extras_15", since = "1.5.0")] #[stable(feature = "binary_heap_extras_15", since = "1.5.0")]
......
...@@ -722,7 +722,7 @@ fn is_empty(&self) -> bool { ...@@ -722,7 +722,7 @@ fn is_empty(&self) -> bool {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<I: FusedIterator + ?Sized> FusedIterator for Box<I> {} impl<I: FusedIterator + ?Sized> FusedIterator for Box<I> {}
......
...@@ -1156,7 +1156,7 @@ fn size_hint(&self) -> (usize, Option<usize>) { ...@@ -1156,7 +1156,7 @@ fn size_hint(&self) -> (usize, Option<usize>) {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, K, V> FusedIterator for Iter<'a, K, V> {} impl<'a, K, V> FusedIterator for Iter<'a, K, V> {}
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
...@@ -1235,7 +1235,7 @@ fn len(&self) -> usize { ...@@ -1235,7 +1235,7 @@ fn len(&self) -> usize {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, K, V> FusedIterator for IterMut<'a, K, V> {} impl<'a, K, V> FusedIterator for IterMut<'a, K, V> {}
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
...@@ -1365,7 +1365,7 @@ fn len(&self) -> usize { ...@@ -1365,7 +1365,7 @@ fn len(&self) -> usize {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<K, V> FusedIterator for IntoIter<K, V> {} impl<K, V> FusedIterator for IntoIter<K, V> {}
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
...@@ -1395,7 +1395,7 @@ fn len(&self) -> usize { ...@@ -1395,7 +1395,7 @@ fn len(&self) -> usize {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, K, V> FusedIterator for Keys<'a, K, V> {} impl<'a, K, V> FusedIterator for Keys<'a, K, V> {}
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
...@@ -1432,7 +1432,7 @@ fn len(&self) -> usize { ...@@ -1432,7 +1432,7 @@ fn len(&self) -> usize {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, K, V> FusedIterator for Values<'a, K, V> {} impl<'a, K, V> FusedIterator for Values<'a, K, V> {}
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
...@@ -1482,7 +1482,7 @@ fn len(&self) -> usize { ...@@ -1482,7 +1482,7 @@ fn len(&self) -> usize {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, K, V> FusedIterator for ValuesMut<'a, K, V> {} impl<'a, K, V> FusedIterator for ValuesMut<'a, K, V> {}
...@@ -1561,7 +1561,7 @@ unsafe fn next_back_unchecked(&mut self) -> (&'a K, &'a V) { ...@@ -1561,7 +1561,7 @@ unsafe fn next_back_unchecked(&mut self) -> (&'a K, &'a V) {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, K, V> FusedIterator for Range<'a, K, V> {} impl<'a, K, V> FusedIterator for Range<'a, K, V> {}
#[stable(feature = "btree_range", since = "1.17.0")] #[stable(feature = "btree_range", since = "1.17.0")]
...@@ -1630,7 +1630,7 @@ fn next_back(&mut self) -> Option<(&'a K, &'a mut V)> { ...@@ -1630,7 +1630,7 @@ fn next_back(&mut self) -> Option<(&'a K, &'a mut V)> {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, K, V> FusedIterator for RangeMut<'a, K, V> {} impl<'a, K, V> FusedIterator for RangeMut<'a, K, V> {}
impl<'a, K, V> RangeMut<'a, K, V> { impl<'a, K, V> RangeMut<'a, K, V> {
......
...@@ -946,7 +946,7 @@ impl<'a, T> ExactSizeIterator for Iter<'a, T> { ...@@ -946,7 +946,7 @@ impl<'a, T> ExactSizeIterator for Iter<'a, T> {
fn len(&self) -> usize { self.iter.len() } fn len(&self) -> usize { self.iter.len() }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, T> FusedIterator for Iter<'a, T> {} impl<'a, T> FusedIterator for Iter<'a, T> {}
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
...@@ -971,7 +971,7 @@ impl<T> ExactSizeIterator for IntoIter<T> { ...@@ -971,7 +971,7 @@ impl<T> ExactSizeIterator for IntoIter<T> {
fn len(&self) -> usize { self.iter.len() } fn len(&self) -> usize { self.iter.len() }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<T> FusedIterator for IntoIter<T> {} impl<T> FusedIterator for IntoIter<T> {}
#[stable(feature = "btree_range", since = "1.17.0")] #[stable(feature = "btree_range", since = "1.17.0")]
...@@ -997,7 +997,7 @@ fn next_back(&mut self) -> Option<&'a T> { ...@@ -997,7 +997,7 @@ fn next_back(&mut self) -> Option<&'a T> {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, T> FusedIterator for Range<'a, T> {} impl<'a, T> FusedIterator for Range<'a, T> {}
/// Compare `x` and `y`, but return `short` if x is None and `long` if y is None /// Compare `x` and `y`, but return `short` if x is None and `long` if y is None
...@@ -1044,7 +1044,7 @@ fn size_hint(&self) -> (usize, Option<usize>) { ...@@ -1044,7 +1044,7 @@ fn size_hint(&self) -> (usize, Option<usize>) {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, T: Ord> FusedIterator for Difference<'a, T> {} impl<'a, T: Ord> FusedIterator for Difference<'a, T> {}
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
...@@ -1078,7 +1078,7 @@ fn size_hint(&self) -> (usize, Option<usize>) { ...@@ -1078,7 +1078,7 @@ fn size_hint(&self) -> (usize, Option<usize>) {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, T: Ord> FusedIterator for SymmetricDifference<'a, T> {} impl<'a, T: Ord> FusedIterator for SymmetricDifference<'a, T> {}
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
...@@ -1116,7 +1116,7 @@ fn size_hint(&self) -> (usize, Option<usize>) { ...@@ -1116,7 +1116,7 @@ fn size_hint(&self) -> (usize, Option<usize>) {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, T: Ord> FusedIterator for Intersection<'a, T> {} impl<'a, T: Ord> FusedIterator for Intersection<'a, T> {}
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
...@@ -1150,5 +1150,5 @@ fn size_hint(&self) -> (usize, Option<usize>) { ...@@ -1150,5 +1150,5 @@ fn size_hint(&self) -> (usize, Option<usize>) {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, T: Ord> FusedIterator for Union<'a, T> {} impl<'a, T: Ord> FusedIterator for Union<'a, T> {}
...@@ -96,7 +96,6 @@ ...@@ -96,7 +96,6 @@
#![feature(fmt_internals)] #![feature(fmt_internals)]
#![feature(from_ref)] #![feature(from_ref)]
#![feature(fundamental)] #![feature(fundamental)]
#![feature(fused)]
#![feature(generic_param_attrs)] #![feature(generic_param_attrs)]
#![feature(i128_type)] #![feature(i128_type)]
#![feature(inclusive_range)] #![feature(inclusive_range)]
...@@ -126,7 +125,7 @@ ...@@ -126,7 +125,7 @@
#![feature(exact_chunks)] #![feature(exact_chunks)]
#![feature(pointer_methods)] #![feature(pointer_methods)]
#![cfg_attr(not(test), feature(fused, fn_traits, placement_new_protocol, swap_with_slice, i128))] #![cfg_attr(not(test), feature(fn_traits, placement_new_protocol, swap_with_slice, i128))]
#![cfg_attr(test, feature(test, box_heap))] #![cfg_attr(test, feature(test, box_heap))]
// Allow testing this library // Allow testing this library
......
...@@ -897,7 +897,7 @@ fn next_back(&mut self) -> Option<&'a T> { ...@@ -897,7 +897,7 @@ fn next_back(&mut self) -> Option<&'a T> {
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
impl<'a, T> ExactSizeIterator for Iter<'a, T> {} impl<'a, T> ExactSizeIterator for Iter<'a, T> {}
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, T> FusedIterator for Iter<'a, T> {} impl<'a, T> FusedIterator for Iter<'a, T> {}
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
...@@ -946,7 +946,7 @@ fn next_back(&mut self) -> Option<&'a mut T> { ...@@ -946,7 +946,7 @@ fn next_back(&mut self) -> Option<&'a mut T> {
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
impl<'a, T> ExactSizeIterator for IterMut<'a, T> {} impl<'a, T> ExactSizeIterator for IterMut<'a, T> {}
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, T> FusedIterator for IterMut<'a, T> {} impl<'a, T> FusedIterator for IterMut<'a, T> {}
impl<'a, T> IterMut<'a, T> { impl<'a, T> IterMut<'a, T> {
...@@ -1117,7 +1117,7 @@ fn next_back(&mut self) -> Option<T> { ...@@ -1117,7 +1117,7 @@ fn next_back(&mut self) -> Option<T> {
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
impl<T> ExactSizeIterator for IntoIter<T> {} impl<T> ExactSizeIterator for IntoIter<T> {}
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<T> FusedIterator for IntoIter<T> {} impl<T> FusedIterator for IntoIter<T> {}
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
......
...@@ -172,7 +172,7 @@ fn size_hint(&self) -> (usize, Option<usize>) { ...@@ -172,7 +172,7 @@ fn size_hint(&self) -> (usize, Option<usize>) {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a> FusedIterator for EncodeUtf16<'a> {} impl<'a> FusedIterator for EncodeUtf16<'a> {}
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
......
...@@ -2254,5 +2254,5 @@ fn next_back(&mut self) -> Option<char> { ...@@ -2254,5 +2254,5 @@ fn next_back(&mut self) -> Option<char> {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a> FusedIterator for Drain<'a> {} impl<'a> FusedIterator for Drain<'a> {}
...@@ -2273,7 +2273,7 @@ fn is_empty(&self) -> bool { ...@@ -2273,7 +2273,7 @@ fn is_empty(&self) -> bool {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<T> FusedIterator for IntoIter<T> {} impl<T> FusedIterator for IntoIter<T> {}
#[unstable(feature = "trusted_len", issue = "37572")] #[unstable(feature = "trusted_len", issue = "37572")]
...@@ -2379,7 +2379,7 @@ fn is_empty(&self) -> bool { ...@@ -2379,7 +2379,7 @@ fn is_empty(&self) -> bool {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, T> FusedIterator for Drain<'a, T> {} impl<'a, T> FusedIterator for Drain<'a, T> {}
/// A place for insertion at the back of a `Vec`. /// A place for insertion at the back of a `Vec`.
......
...@@ -1991,7 +1991,7 @@ fn is_empty(&self) -> bool { ...@@ -1991,7 +1991,7 @@ fn is_empty(&self) -> bool {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, T> FusedIterator for Iter<'a, T> {} impl<'a, T> FusedIterator for Iter<'a, T> {}
...@@ -2084,7 +2084,7 @@ fn is_empty(&self) -> bool { ...@@ -2084,7 +2084,7 @@ fn is_empty(&self) -> bool {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, T> FusedIterator for IterMut<'a, T> {} impl<'a, T> FusedIterator for IterMut<'a, T> {}
/// An owning iterator over the elements of a `VecDeque`. /// An owning iterator over the elements of a `VecDeque`.
...@@ -2140,7 +2140,7 @@ fn is_empty(&self) -> bool { ...@@ -2140,7 +2140,7 @@ fn is_empty(&self) -> bool {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<T> FusedIterator for IntoIter<T> {} impl<T> FusedIterator for IntoIter<T> {}
/// A draining iterator over the elements of a `VecDeque`. /// A draining iterator over the elements of a `VecDeque`.
...@@ -2247,7 +2247,7 @@ fn next_back(&mut self) -> Option<T> { ...@@ -2247,7 +2247,7 @@ fn next_back(&mut self) -> Option<T> {
#[stable(feature = "drain", since = "1.6.0")] #[stable(feature = "drain", since = "1.6.0")]
impl<'a, T: 'a> ExactSizeIterator for Drain<'a, T> {} impl<'a, T: 'a> ExactSizeIterator for Drain<'a, T> {}
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, T: 'a> FusedIterator for Drain<'a, T> {} impl<'a, T: 'a> FusedIterator for Drain<'a, T> {}
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
......
...@@ -643,7 +643,7 @@ fn len(&self) -> usize { ...@@ -643,7 +643,7 @@ fn len(&self) -> usize {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl FusedIterator for EscapeUnicode {} impl FusedIterator for EscapeUnicode {}
#[stable(feature = "char_struct_display", since = "1.16.0")] #[stable(feature = "char_struct_display", since = "1.16.0")]
...@@ -756,7 +756,7 @@ fn len(&self) -> usize { ...@@ -756,7 +756,7 @@ fn len(&self) -> usize {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl FusedIterator for EscapeDefault {} impl FusedIterator for EscapeDefault {}
#[stable(feature = "char_struct_display", since = "1.16.0")] #[stable(feature = "char_struct_display", since = "1.16.0")]
...@@ -790,7 +790,7 @@ fn size_hint(&self) -> (usize, Option<usize>) { self.0.size_hint() } ...@@ -790,7 +790,7 @@ fn size_hint(&self) -> (usize, Option<usize>) { self.0.size_hint() }
#[stable(feature = "char_escape_debug", since = "1.20.0")] #[stable(feature = "char_escape_debug", since = "1.20.0")]
impl ExactSizeIterator for EscapeDebug { } impl ExactSizeIterator for EscapeDebug { }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl FusedIterator for EscapeDebug {} impl FusedIterator for EscapeDebug {}
#[stable(feature = "char_escape_debug", since = "1.20.0")] #[stable(feature = "char_escape_debug", since = "1.20.0")]
...@@ -904,5 +904,5 @@ fn next(&mut self) -> Option<Result<char, InvalidSequence>> { ...@@ -904,5 +904,5 @@ fn next(&mut self) -> Option<Result<char, InvalidSequence>> {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[unstable(feature = "decode_utf8", issue = "33906")]
impl<I: FusedIterator<Item = u8>> FusedIterator for DecodeUtf8<I> {} impl<I: FusedIterator<Item = u8>> FusedIterator for DecodeUtf8<I> {}
...@@ -344,7 +344,7 @@ ...@@ -344,7 +344,7 @@
pub use self::traits::{FromIterator, IntoIterator, DoubleEndedIterator, Extend}; pub use self::traits::{FromIterator, IntoIterator, DoubleEndedIterator, Extend};
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
pub use self::traits::{ExactSizeIterator, Sum, Product}; pub use self::traits::{ExactSizeIterator, Sum, Product};
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
pub use self::traits::FusedIterator; pub use self::traits::FusedIterator;
#[unstable(feature = "trusted_len", issue = "37572")] #[unstable(feature = "trusted_len", issue = "37572")]
pub use self::traits::TrustedLen; pub use self::traits::TrustedLen;
...@@ -506,7 +506,7 @@ fn is_empty(&self) -> bool { ...@@ -506,7 +506,7 @@ fn is_empty(&self) -> bool {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<I> FusedIterator for Rev<I> impl<I> FusedIterator for Rev<I>
where I: FusedIterator + DoubleEndedIterator {} where I: FusedIterator + DoubleEndedIterator {}
...@@ -589,7 +589,7 @@ fn is_empty(&self) -> bool { ...@@ -589,7 +589,7 @@ fn is_empty(&self) -> bool {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, I, T: 'a> FusedIterator for Cloned<I> impl<'a, I, T: 'a> FusedIterator for Cloned<I>
where I: FusedIterator<Item=&'a T>, T: Clone where I: FusedIterator<Item=&'a T>, T: Clone
{} {}
...@@ -662,7 +662,7 @@ fn size_hint(&self) -> (usize, Option<usize>) { ...@@ -662,7 +662,7 @@ fn size_hint(&self) -> (usize, Option<usize>) {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<I> FusedIterator for Cycle<I> where I: Clone + Iterator {} impl<I> FusedIterator for Cycle<I> where I: Clone + Iterator {}
/// An iterator for stepping iterators by a custom amount. /// An iterator for stepping iterators by a custom amount.
...@@ -1002,7 +1002,7 @@ fn rfold<Acc, F>(self, init: Acc, mut f: F) -> Acc ...@@ -1002,7 +1002,7 @@ fn rfold<Acc, F>(self, init: Acc, mut f: F) -> Acc
} }
// Note: *both* must be fused to handle double-ended iterators. // Note: *both* must be fused to handle double-ended iterators.
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<A, B> FusedIterator for Chain<A, B> impl<A, B> FusedIterator for Chain<A, B>
where A: FusedIterator, where A: FusedIterator,
B: FusedIterator<Item=A::Item>, B: FusedIterator<Item=A::Item>,
...@@ -1262,7 +1262,7 @@ fn may_have_side_effect() -> bool { ...@@ -1262,7 +1262,7 @@ fn may_have_side_effect() -> bool {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<A, B> FusedIterator for Zip<A, B> impl<A, B> FusedIterator for Zip<A, B>
where A: FusedIterator, B: FusedIterator, {} where A: FusedIterator, B: FusedIterator, {}
...@@ -1404,7 +1404,7 @@ fn is_empty(&self) -> bool { ...@@ -1404,7 +1404,7 @@ fn is_empty(&self) -> bool {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<B, I: FusedIterator, F> FusedIterator for Map<I, F> impl<B, I: FusedIterator, F> FusedIterator for Map<I, F>
where F: FnMut(I::Item) -> B {} where F: FnMut(I::Item) -> B {}
...@@ -1553,7 +1553,7 @@ fn rfold<Acc, Fold>(self, init: Acc, mut fold: Fold) -> Acc ...@@ -1553,7 +1553,7 @@ fn rfold<Acc, Fold>(self, init: Acc, mut fold: Fold) -> Acc
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<I: FusedIterator, P> FusedIterator for Filter<I, P> impl<I: FusedIterator, P> FusedIterator for Filter<I, P>
where P: FnMut(&I::Item) -> bool {} where P: FnMut(&I::Item) -> bool {}
...@@ -1663,7 +1663,7 @@ fn rfold<Acc, Fold>(self, init: Acc, mut fold: Fold) -> Acc ...@@ -1663,7 +1663,7 @@ fn rfold<Acc, Fold>(self, init: Acc, mut fold: Fold) -> Acc
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<B, I: FusedIterator, F> FusedIterator for FilterMap<I, F> impl<B, I: FusedIterator, F> FusedIterator for FilterMap<I, F>
where F: FnMut(I::Item) -> Option<B> {} where F: FnMut(I::Item) -> Option<B> {}
...@@ -1818,7 +1818,7 @@ fn may_have_side_effect() -> bool { ...@@ -1818,7 +1818,7 @@ fn may_have_side_effect() -> bool {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<I> FusedIterator for Enumerate<I> where I: FusedIterator {} impl<I> FusedIterator for Enumerate<I> where I: FusedIterator {}
#[unstable(feature = "trusted_len", issue = "37572")] #[unstable(feature = "trusted_len", issue = "37572")]
...@@ -1938,7 +1938,7 @@ fn fold<Acc, Fold>(self, init: Acc, mut fold: Fold) -> Acc ...@@ -1938,7 +1938,7 @@ fn fold<Acc, Fold>(self, init: Acc, mut fold: Fold) -> Acc
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
impl<I: ExactSizeIterator> ExactSizeIterator for Peekable<I> {} impl<I: ExactSizeIterator> ExactSizeIterator for Peekable<I> {}
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<I: FusedIterator> FusedIterator for Peekable<I> {} impl<I: FusedIterator> FusedIterator for Peekable<I> {}
impl<I: Iterator> Peekable<I> { impl<I: Iterator> Peekable<I> {
...@@ -2072,7 +2072,7 @@ fn fold<Acc, Fold>(mut self, mut init: Acc, mut fold: Fold) -> Acc ...@@ -2072,7 +2072,7 @@ fn fold<Acc, Fold>(mut self, mut init: Acc, mut fold: Fold) -> Acc
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<I, P> FusedIterator for SkipWhile<I, P> impl<I, P> FusedIterator for SkipWhile<I, P>
where I: FusedIterator, P: FnMut(&I::Item) -> bool {} where I: FusedIterator, P: FnMut(&I::Item) -> bool {}
...@@ -2151,7 +2151,7 @@ fn try_fold<Acc, Fold, R>(&mut self, init: Acc, mut fold: Fold) -> R where ...@@ -2151,7 +2151,7 @@ fn try_fold<Acc, Fold, R>(&mut self, init: Acc, mut fold: Fold) -> R where
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<I, P> FusedIterator for TakeWhile<I, P> impl<I, P> FusedIterator for TakeWhile<I, P>
where I: FusedIterator, P: FnMut(&I::Item) -> bool {} where I: FusedIterator, P: FnMut(&I::Item) -> bool {}
...@@ -2290,7 +2290,7 @@ fn try_rfold<Acc, Fold, R>(&mut self, init: Acc, mut fold: Fold) -> R where ...@@ -2290,7 +2290,7 @@ fn try_rfold<Acc, Fold, R>(&mut self, init: Acc, mut fold: Fold) -> R where
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<I> FusedIterator for Skip<I> where I: FusedIterator {} impl<I> FusedIterator for Skip<I> where I: FusedIterator {}
/// An iterator that only iterates over the first `n` iterations of `iter`. /// An iterator that only iterates over the first `n` iterations of `iter`.
...@@ -2371,7 +2371,7 @@ fn try_fold<Acc, Fold, R>(&mut self, init: Acc, mut fold: Fold) -> R where ...@@ -2371,7 +2371,7 @@ fn try_fold<Acc, Fold, R>(&mut self, init: Acc, mut fold: Fold) -> R where
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
impl<I> ExactSizeIterator for Take<I> where I: ExactSizeIterator {} impl<I> ExactSizeIterator for Take<I> where I: ExactSizeIterator {}
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<I> FusedIterator for Take<I> where I: FusedIterator {} impl<I> FusedIterator for Take<I> where I: FusedIterator {}
#[unstable(feature = "trusted_len", issue = "37572")] #[unstable(feature = "trusted_len", issue = "37572")]
...@@ -2517,7 +2517,7 @@ fn rfold<Acc, Fold>(self, init: Acc, fold: Fold) -> Acc ...@@ -2517,7 +2517,7 @@ fn rfold<Acc, Fold>(self, init: Acc, fold: Fold) -> Acc
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<I, U, F> FusedIterator for FlatMap<I, U, F> impl<I, U, F> FusedIterator for FlatMap<I, U, F>
where I: FusedIterator, U: IntoIterator, F: FnMut(I::Item) -> U {} where I: FusedIterator, U: IntoIterator, F: FnMut(I::Item) -> U {}
...@@ -2605,7 +2605,7 @@ fn rfold<Acc, Fold>(self, init: Acc, fold: Fold) -> Acc ...@@ -2605,7 +2605,7 @@ fn rfold<Acc, Fold>(self, init: Acc, fold: Fold) -> Acc
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<I, U> FusedIterator for Flatten<I> impl<I, U> FusedIterator for Flatten<I>
where I: FusedIterator, U: Iterator, where I: FusedIterator, U: Iterator,
I::Item: IntoIterator<IntoIter = U, Item = U::Item> {} I::Item: IntoIterator<IntoIter = U, Item = U::Item> {}
...@@ -2765,7 +2765,7 @@ pub struct Fuse<I> { ...@@ -2765,7 +2765,7 @@ pub struct Fuse<I> {
done: bool done: bool
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<I> FusedIterator for Fuse<I> where I: Iterator {} impl<I> FusedIterator for Fuse<I> where I: Iterator {}
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
...@@ -2896,7 +2896,7 @@ fn may_have_side_effect() -> bool { ...@@ -2896,7 +2896,7 @@ fn may_have_side_effect() -> bool {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<I> Iterator for Fuse<I> where I: FusedIterator { impl<I> Iterator for Fuse<I> where I: FusedIterator {
#[inline] #[inline]
fn next(&mut self) -> Option<<I as Iterator>::Item> { fn next(&mut self) -> Option<<I as Iterator>::Item> {
...@@ -2938,7 +2938,7 @@ fn fold<Acc, Fold>(self, init: Acc, fold: Fold) -> Acc ...@@ -2938,7 +2938,7 @@ fn fold<Acc, Fold>(self, init: Acc, fold: Fold) -> Acc
} }
} }
#[unstable(feature = "fused", reason = "recently added", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<I> DoubleEndedIterator for Fuse<I> impl<I> DoubleEndedIterator for Fuse<I>
where I: DoubleEndedIterator + FusedIterator where I: DoubleEndedIterator + FusedIterator
{ {
...@@ -3082,6 +3082,6 @@ fn is_empty(&self) -> bool { ...@@ -3082,6 +3082,6 @@ fn is_empty(&self) -> bool {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<I: FusedIterator, F> FusedIterator for Inspect<I, F> impl<I: FusedIterator, F> FusedIterator for Inspect<I, F>
where F: FnMut(&I::Item) {} where F: FnMut(&I::Item) {}
...@@ -295,7 +295,7 @@ fn next_back(&mut self) -> Option<A> { ...@@ -295,7 +295,7 @@ fn next_back(&mut self) -> Option<A> {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<A: Step> FusedIterator for ops::Range<A> {} impl<A: Step> FusedIterator for ops::Range<A> {}
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
...@@ -322,7 +322,7 @@ fn nth(&mut self, n: usize) -> Option<A> { ...@@ -322,7 +322,7 @@ fn nth(&mut self, n: usize) -> Option<A> {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<A: Step> FusedIterator for ops::RangeFrom<A> {} impl<A: Step> FusedIterator for ops::RangeFrom<A> {}
#[unstable(feature = "trusted_len", issue = "37572")] #[unstable(feature = "trusted_len", issue = "37572")]
...@@ -463,5 +463,5 @@ fn try_rfold<B, F, R>(&mut self, init: B, mut f: F) -> R where ...@@ -463,5 +463,5 @@ fn try_rfold<B, F, R>(&mut self, init: B, mut f: F) -> R where
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<A: Step> FusedIterator for ops::RangeInclusive<A> {} impl<A: Step> FusedIterator for ops::RangeInclusive<A> {}
...@@ -41,7 +41,7 @@ impl<A: Clone> DoubleEndedIterator for Repeat<A> { ...@@ -41,7 +41,7 @@ impl<A: Clone> DoubleEndedIterator for Repeat<A> {
fn next_back(&mut self) -> Option<A> { Some(self.element.clone()) } fn next_back(&mut self) -> Option<A> { Some(self.element.clone()) }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<A: Clone> FusedIterator for Repeat<A> {} impl<A: Clone> FusedIterator for Repeat<A> {}
#[unstable(feature = "trusted_len", issue = "37572")] #[unstable(feature = "trusted_len", issue = "37572")]
...@@ -135,7 +135,7 @@ impl<A, F: FnMut() -> A> DoubleEndedIterator for RepeatWith<F> { ...@@ -135,7 +135,7 @@ impl<A, F: FnMut() -> A> DoubleEndedIterator for RepeatWith<F> {
fn next_back(&mut self) -> Option<A> { self.next() } fn next_back(&mut self) -> Option<A> { self.next() }
} }
#[unstable(feature = "fused", issue = "35602")] #[unstable(feature = "iterator_repeat_with", issue = "48169")]
impl<A, F: FnMut() -> A> FusedIterator for RepeatWith<F> {} impl<A, F: FnMut() -> A> FusedIterator for RepeatWith<F> {}
#[unstable(feature = "trusted_len", issue = "37572")] #[unstable(feature = "trusted_len", issue = "37572")]
...@@ -259,7 +259,7 @@ fn len(&self) -> usize { ...@@ -259,7 +259,7 @@ fn len(&self) -> usize {
#[unstable(feature = "trusted_len", issue = "37572")] #[unstable(feature = "trusted_len", issue = "37572")]
unsafe impl<T> TrustedLen for Empty<T> {} unsafe impl<T> TrustedLen for Empty<T> {}
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<T> FusedIterator for Empty<T> {} impl<T> FusedIterator for Empty<T> {}
// not #[derive] because that adds a Clone bound on T, // not #[derive] because that adds a Clone bound on T,
...@@ -340,7 +340,7 @@ fn len(&self) -> usize { ...@@ -340,7 +340,7 @@ fn len(&self) -> usize {
#[unstable(feature = "trusted_len", issue = "37572")] #[unstable(feature = "trusted_len", issue = "37572")]
unsafe impl<T> TrustedLen for Once<T> {} unsafe impl<T> TrustedLen for Once<T> {}
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<T> FusedIterator for Once<T> {} impl<T> FusedIterator for Once<T> {}
/// Creates an iterator that yields an element exactly once. /// Creates an iterator that yields an element exactly once.
......
...@@ -959,10 +959,10 @@ fn product<I>(iter: I) -> Result<T, E> ...@@ -959,10 +959,10 @@ fn product<I>(iter: I) -> Result<T, E>
/// [`None`]: ../../std/option/enum.Option.html#variant.None /// [`None`]: ../../std/option/enum.Option.html#variant.None
/// [`Iterator::fuse`]: ../../std/iter/trait.Iterator.html#method.fuse /// [`Iterator::fuse`]: ../../std/iter/trait.Iterator.html#method.fuse
/// [`Fuse`]: ../../std/iter/struct.Fuse.html /// [`Fuse`]: ../../std/iter/struct.Fuse.html
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
pub trait FusedIterator: Iterator {} pub trait FusedIterator: Iterator {}
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, I: FusedIterator + ?Sized> FusedIterator for &'a mut I {} impl<'a, I: FusedIterator + ?Sized> FusedIterator for &'a mut I {}
/// An iterator that reports an accurate length using size_hint. /// An iterator that reports an accurate length using size_hint.
......
...@@ -1051,7 +1051,7 @@ fn next_back(&mut self) -> Option<&'a A> { self.inner.next_back() } ...@@ -1051,7 +1051,7 @@ fn next_back(&mut self) -> Option<&'a A> { self.inner.next_back() }
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
impl<'a, A> ExactSizeIterator for Iter<'a, A> {} impl<'a, A> ExactSizeIterator for Iter<'a, A> {}
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, A> FusedIterator for Iter<'a, A> {} impl<'a, A> FusedIterator for Iter<'a, A> {}
#[unstable(feature = "trusted_len", issue = "37572")] #[unstable(feature = "trusted_len", issue = "37572")]
...@@ -1096,7 +1096,7 @@ fn next_back(&mut self) -> Option<&'a mut A> { self.inner.next_back() } ...@@ -1096,7 +1096,7 @@ fn next_back(&mut self) -> Option<&'a mut A> { self.inner.next_back() }
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
impl<'a, A> ExactSizeIterator for IterMut<'a, A> {} impl<'a, A> ExactSizeIterator for IterMut<'a, A> {}
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, A> FusedIterator for IterMut<'a, A> {} impl<'a, A> FusedIterator for IterMut<'a, A> {}
#[unstable(feature = "trusted_len", issue = "37572")] #[unstable(feature = "trusted_len", issue = "37572")]
unsafe impl<'a, A> TrustedLen for IterMut<'a, A> {} unsafe impl<'a, A> TrustedLen for IterMut<'a, A> {}
...@@ -1133,7 +1133,7 @@ fn next_back(&mut self) -> Option<A> { self.inner.next_back() } ...@@ -1133,7 +1133,7 @@ fn next_back(&mut self) -> Option<A> { self.inner.next_back() }
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
impl<A> ExactSizeIterator for IntoIter<A> {} impl<A> ExactSizeIterator for IntoIter<A> {}
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<A> FusedIterator for IntoIter<A> {} impl<A> FusedIterator for IntoIter<A> {}
#[unstable(feature = "trusted_len", issue = "37572")] #[unstable(feature = "trusted_len", issue = "37572")]
......
...@@ -1038,7 +1038,7 @@ fn next_back(&mut self) -> Option<&'a T> { self.inner.take() } ...@@ -1038,7 +1038,7 @@ fn next_back(&mut self) -> Option<&'a T> { self.inner.take() }
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
impl<'a, T> ExactSizeIterator for Iter<'a, T> {} impl<'a, T> ExactSizeIterator for Iter<'a, T> {}
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, T> FusedIterator for Iter<'a, T> {} impl<'a, T> FusedIterator for Iter<'a, T> {}
#[unstable(feature = "trusted_len", issue = "37572")] #[unstable(feature = "trusted_len", issue = "37572")]
...@@ -1082,7 +1082,7 @@ fn next_back(&mut self) -> Option<&'a mut T> { self.inner.take() } ...@@ -1082,7 +1082,7 @@ fn next_back(&mut self) -> Option<&'a mut T> { self.inner.take() }
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
impl<'a, T> ExactSizeIterator for IterMut<'a, T> {} impl<'a, T> ExactSizeIterator for IterMut<'a, T> {}
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, T> FusedIterator for IterMut<'a, T> {} impl<'a, T> FusedIterator for IterMut<'a, T> {}
#[unstable(feature = "trusted_len", issue = "37572")] #[unstable(feature = "trusted_len", issue = "37572")]
...@@ -1125,7 +1125,7 @@ fn next_back(&mut self) -> Option<T> { self.inner.take() } ...@@ -1125,7 +1125,7 @@ fn next_back(&mut self) -> Option<T> { self.inner.take() }
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
impl<T> ExactSizeIterator for IntoIter<T> {} impl<T> ExactSizeIterator for IntoIter<T> {}
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<T> FusedIterator for IntoIter<T> {} impl<T> FusedIterator for IntoIter<T> {}
#[unstable(feature = "trusted_len", issue = "37572")] #[unstable(feature = "trusted_len", issue = "37572")]
......
...@@ -1455,7 +1455,7 @@ fn is_empty(&self) -> bool { ...@@ -1455,7 +1455,7 @@ fn is_empty(&self) -> bool {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, T> FusedIterator for Iter<'a, T> {} impl<'a, T> FusedIterator for Iter<'a, T> {}
#[unstable(feature = "trusted_len", issue = "37572")] #[unstable(feature = "trusted_len", issue = "37572")]
...@@ -1583,7 +1583,7 @@ fn is_empty(&self) -> bool { ...@@ -1583,7 +1583,7 @@ fn is_empty(&self) -> bool {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, T> FusedIterator for IterMut<'a, T> {} impl<'a, T> FusedIterator for IterMut<'a, T> {}
#[unstable(feature = "trusted_len", issue = "37572")] #[unstable(feature = "trusted_len", issue = "37572")]
...@@ -1731,7 +1731,7 @@ fn finish(&mut self) -> Option<&'a [T]> { ...@@ -1731,7 +1731,7 @@ fn finish(&mut self) -> Option<&'a [T]> {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, T, P> FusedIterator for Split<'a, T, P> where P: FnMut(&T) -> bool {} impl<'a, T, P> FusedIterator for Split<'a, T, P> where P: FnMut(&T) -> bool {}
/// An iterator over the subslices of the vector which are separated /// An iterator over the subslices of the vector which are separated
...@@ -1829,7 +1829,7 @@ fn next_back(&mut self) -> Option<&'a mut [T]> { ...@@ -1829,7 +1829,7 @@ fn next_back(&mut self) -> Option<&'a mut [T]> {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, T, P> FusedIterator for SplitMut<'a, T, P> where P: FnMut(&T) -> bool {} impl<'a, T, P> FusedIterator for SplitMut<'a, T, P> where P: FnMut(&T) -> bool {}
/// An iterator over subslices separated by elements that match a predicate /// An iterator over subslices separated by elements that match a predicate
...@@ -1886,7 +1886,6 @@ fn finish(&mut self) -> Option<&'a [T]> { ...@@ -1886,7 +1886,6 @@ fn finish(&mut self) -> Option<&'a [T]> {
} }
} }
//#[unstable(feature = "fused", issue = "35602")]
#[unstable(feature = "slice_rsplit", issue = "41020")] #[unstable(feature = "slice_rsplit", issue = "41020")]
impl<'a, T, P> FusedIterator for RSplit<'a, T, P> where P: FnMut(&T) -> bool {} impl<'a, T, P> FusedIterator for RSplit<'a, T, P> where P: FnMut(&T) -> bool {}
...@@ -1945,7 +1944,6 @@ fn next_back(&mut self) -> Option<&'a mut [T]> { ...@@ -1945,7 +1944,6 @@ fn next_back(&mut self) -> Option<&'a mut [T]> {
} }
} }
//#[unstable(feature = "fused", issue = "35602")]
#[unstable(feature = "slice_rsplit", issue = "41020")] #[unstable(feature = "slice_rsplit", issue = "41020")]
impl<'a, T, P> FusedIterator for RSplitMut<'a, T, P> where P: FnMut(&T) -> bool {} impl<'a, T, P> FusedIterator for RSplitMut<'a, T, P> where P: FnMut(&T) -> bool {}
...@@ -2082,7 +2080,7 @@ fn size_hint(&self) -> (usize, Option<usize>) { ...@@ -2082,7 +2080,7 @@ fn size_hint(&self) -> (usize, Option<usize>) {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, $elem, P> FusedIterator for $name<'a, $elem, P> impl<'a, $elem, P> FusedIterator for $name<'a, $elem, P>
where P: FnMut(&T) -> bool {} where P: FnMut(&T) -> bool {}
} }
...@@ -2188,7 +2186,7 @@ fn next_back(&mut self) -> Option<&'a [T]> { ...@@ -2188,7 +2186,7 @@ fn next_back(&mut self) -> Option<&'a [T]> {
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
impl<'a, T> ExactSizeIterator for Windows<'a, T> {} impl<'a, T> ExactSizeIterator for Windows<'a, T> {}
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, T> FusedIterator for Windows<'a, T> {} impl<'a, T> FusedIterator for Windows<'a, T> {}
#[doc(hidden)] #[doc(hidden)]
...@@ -2307,7 +2305,7 @@ fn next_back(&mut self) -> Option<&'a [T]> { ...@@ -2307,7 +2305,7 @@ fn next_back(&mut self) -> Option<&'a [T]> {
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
impl<'a, T> ExactSizeIterator for Chunks<'a, T> {} impl<'a, T> ExactSizeIterator for Chunks<'a, T> {}
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, T> FusedIterator for Chunks<'a, T> {} impl<'a, T> FusedIterator for Chunks<'a, T> {}
#[doc(hidden)] #[doc(hidden)]
...@@ -2423,7 +2421,7 @@ fn next_back(&mut self) -> Option<&'a mut [T]> { ...@@ -2423,7 +2421,7 @@ fn next_back(&mut self) -> Option<&'a mut [T]> {
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
impl<'a, T> ExactSizeIterator for ChunksMut<'a, T> {} impl<'a, T> ExactSizeIterator for ChunksMut<'a, T> {}
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, T> FusedIterator for ChunksMut<'a, T> {} impl<'a, T> FusedIterator for ChunksMut<'a, T> {}
#[doc(hidden)] #[doc(hidden)]
...@@ -2533,7 +2531,7 @@ fn is_empty(&self) -> bool { ...@@ -2533,7 +2531,7 @@ fn is_empty(&self) -> bool {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[unstable(feature = "exact_chunks", issue = "47115")]
impl<'a, T> FusedIterator for ExactChunks<'a, T> {} impl<'a, T> FusedIterator for ExactChunks<'a, T> {}
#[doc(hidden)] #[doc(hidden)]
...@@ -2630,7 +2628,7 @@ fn is_empty(&self) -> bool { ...@@ -2630,7 +2628,7 @@ fn is_empty(&self) -> bool {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[unstable(feature = "exact_chunks", issue = "47115")]
impl<'a, T> FusedIterator for ExactChunksMut<'a, T> {} impl<'a, T> FusedIterator for ExactChunksMut<'a, T> {}
#[doc(hidden)] #[doc(hidden)]
......
...@@ -609,7 +609,7 @@ fn next_back(&mut self) -> Option<char> { ...@@ -609,7 +609,7 @@ fn next_back(&mut self) -> Option<char> {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a> FusedIterator for Chars<'a> {} impl<'a> FusedIterator for Chars<'a> {}
impl<'a> Chars<'a> { impl<'a> Chars<'a> {
...@@ -702,7 +702,7 @@ fn next_back(&mut self) -> Option<(usize, char)> { ...@@ -702,7 +702,7 @@ fn next_back(&mut self) -> Option<(usize, char)> {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a> FusedIterator for CharIndices<'a> {} impl<'a> FusedIterator for CharIndices<'a> {}
impl<'a> CharIndices<'a> { impl<'a> CharIndices<'a> {
...@@ -817,7 +817,7 @@ fn is_empty(&self) -> bool { ...@@ -817,7 +817,7 @@ fn is_empty(&self) -> bool {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a> FusedIterator for Bytes<'a> {} impl<'a> FusedIterator for Bytes<'a> {}
#[unstable(feature = "trusted_len", issue = "37572")] #[unstable(feature = "trusted_len", issue = "37572")]
...@@ -977,10 +977,10 @@ fn clone(&self) -> Self { ...@@ -977,10 +977,10 @@ fn clone(&self) -> Self {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, P: Pattern<'a>> FusedIterator for $forward_iterator<'a, P> {} impl<'a, P: Pattern<'a>> FusedIterator for $forward_iterator<'a, P> {}
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, P: Pattern<'a>> FusedIterator for $reverse_iterator<'a, P> impl<'a, P: Pattern<'a>> FusedIterator for $reverse_iterator<'a, P>
where P::Searcher: ReverseSearcher<'a> {} where P::Searcher: ReverseSearcher<'a> {}
...@@ -1337,7 +1337,7 @@ fn next_back(&mut self) -> Option<&'a str> { ...@@ -1337,7 +1337,7 @@ fn next_back(&mut self) -> Option<&'a str> {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a> FusedIterator for Lines<'a> {} impl<'a> FusedIterator for Lines<'a> {}
/// Created with the method [`lines_any`]. /// Created with the method [`lines_any`].
...@@ -1403,7 +1403,7 @@ fn next_back(&mut self) -> Option<&'a str> { ...@@ -1403,7 +1403,7 @@ fn next_back(&mut self) -> Option<&'a str> {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
#[allow(deprecated)] #[allow(deprecated)]
impl<'a> FusedIterator for LinesAny<'a> {} impl<'a> FusedIterator for LinesAny<'a> {}
......
...@@ -590,7 +590,7 @@ fn next_back(&mut self) -> Option<u8> { ...@@ -590,7 +590,7 @@ fn next_back(&mut self) -> Option<u8> {
} }
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
impl ExactSizeIterator for EscapeDefault {} impl ExactSizeIterator for EscapeDefault {}
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl FusedIterator for EscapeDefault {} impl FusedIterator for EscapeDefault {}
#[stable(feature = "std_debug", since = "1.16.0")] #[stable(feature = "std_debug", since = "1.16.0")]
......
...@@ -1750,7 +1750,7 @@ fn len(&self) -> usize { ...@@ -1750,7 +1750,7 @@ fn len(&self) -> usize {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, K, V> FusedIterator for Iter<'a, K, V> {} impl<'a, K, V> FusedIterator for Iter<'a, K, V> {}
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
...@@ -1773,7 +1773,7 @@ fn len(&self) -> usize { ...@@ -1773,7 +1773,7 @@ fn len(&self) -> usize {
self.inner.len() self.inner.len()
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, K, V> FusedIterator for IterMut<'a, K, V> {} impl<'a, K, V> FusedIterator for IterMut<'a, K, V> {}
#[stable(feature = "std_debug", since = "1.16.0")] #[stable(feature = "std_debug", since = "1.16.0")]
...@@ -1808,7 +1808,7 @@ fn len(&self) -> usize { ...@@ -1808,7 +1808,7 @@ fn len(&self) -> usize {
self.inner.len() self.inner.len()
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<K, V> FusedIterator for IntoIter<K, V> {} impl<K, V> FusedIterator for IntoIter<K, V> {}
#[stable(feature = "std_debug", since = "1.16.0")] #[stable(feature = "std_debug", since = "1.16.0")]
...@@ -1840,7 +1840,7 @@ fn len(&self) -> usize { ...@@ -1840,7 +1840,7 @@ fn len(&self) -> usize {
self.inner.len() self.inner.len()
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, K, V> FusedIterator for Keys<'a, K, V> {} impl<'a, K, V> FusedIterator for Keys<'a, K, V> {}
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
...@@ -1863,7 +1863,7 @@ fn len(&self) -> usize { ...@@ -1863,7 +1863,7 @@ fn len(&self) -> usize {
self.inner.len() self.inner.len()
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, K, V> FusedIterator for Values<'a, K, V> {} impl<'a, K, V> FusedIterator for Values<'a, K, V> {}
#[stable(feature = "map_values_mut", since = "1.10.0")] #[stable(feature = "map_values_mut", since = "1.10.0")]
...@@ -1886,7 +1886,7 @@ fn len(&self) -> usize { ...@@ -1886,7 +1886,7 @@ fn len(&self) -> usize {
self.inner.len() self.inner.len()
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, K, V> FusedIterator for ValuesMut<'a, K, V> {} impl<'a, K, V> FusedIterator for ValuesMut<'a, K, V> {}
#[stable(feature = "std_debug", since = "1.16.0")] #[stable(feature = "std_debug", since = "1.16.0")]
...@@ -1921,7 +1921,7 @@ fn len(&self) -> usize { ...@@ -1921,7 +1921,7 @@ fn len(&self) -> usize {
self.inner.len() self.inner.len()
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, K, V> FusedIterator for Drain<'a, K, V> {} impl<'a, K, V> FusedIterator for Drain<'a, K, V> {}
#[stable(feature = "std_debug", since = "1.16.0")] #[stable(feature = "std_debug", since = "1.16.0")]
......
...@@ -1097,7 +1097,7 @@ fn len(&self) -> usize { ...@@ -1097,7 +1097,7 @@ fn len(&self) -> usize {
self.iter.len() self.iter.len()
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, K> FusedIterator for Iter<'a, K> {} impl<'a, K> FusedIterator for Iter<'a, K> {}
#[stable(feature = "std_debug", since = "1.16.0")] #[stable(feature = "std_debug", since = "1.16.0")]
...@@ -1124,7 +1124,7 @@ fn len(&self) -> usize { ...@@ -1124,7 +1124,7 @@ fn len(&self) -> usize {
self.iter.len() self.iter.len()
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<K> FusedIterator for IntoIter<K> {} impl<K> FusedIterator for IntoIter<K> {}
#[stable(feature = "std_debug", since = "1.16.0")] #[stable(feature = "std_debug", since = "1.16.0")]
...@@ -1155,7 +1155,7 @@ fn len(&self) -> usize { ...@@ -1155,7 +1155,7 @@ fn len(&self) -> usize {
self.iter.len() self.iter.len()
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, K> FusedIterator for Drain<'a, K> {} impl<'a, K> FusedIterator for Drain<'a, K> {}
#[stable(feature = "std_debug", since = "1.16.0")] #[stable(feature = "std_debug", since = "1.16.0")]
...@@ -1208,7 +1208,7 @@ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { ...@@ -1208,7 +1208,7 @@ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, T, S> FusedIterator for Intersection<'a, T, S> impl<'a, T, S> FusedIterator for Intersection<'a, T, S>
where T: Eq + Hash, where T: Eq + Hash,
S: BuildHasher S: BuildHasher
...@@ -1244,7 +1244,7 @@ fn size_hint(&self) -> (usize, Option<usize>) { ...@@ -1244,7 +1244,7 @@ fn size_hint(&self) -> (usize, Option<usize>) {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, T, S> FusedIterator for Difference<'a, T, S> impl<'a, T, S> FusedIterator for Difference<'a, T, S>
where T: Eq + Hash, where T: Eq + Hash,
S: BuildHasher S: BuildHasher
...@@ -1283,7 +1283,7 @@ fn size_hint(&self) -> (usize, Option<usize>) { ...@@ -1283,7 +1283,7 @@ fn size_hint(&self) -> (usize, Option<usize>) {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, T, S> FusedIterator for SymmetricDifference<'a, T, S> impl<'a, T, S> FusedIterator for SymmetricDifference<'a, T, S>
where T: Eq + Hash, where T: Eq + Hash,
S: BuildHasher S: BuildHasher
...@@ -1307,7 +1307,7 @@ fn clone(&self) -> Union<'a, T, S> { ...@@ -1307,7 +1307,7 @@ fn clone(&self) -> Union<'a, T, S> {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a, T, S> FusedIterator for Union<'a, T, S> impl<'a, T, S> FusedIterator for Union<'a, T, S>
where T: Eq + Hash, where T: Eq + Hash,
S: BuildHasher S: BuildHasher
......
...@@ -266,7 +266,6 @@ ...@@ -266,7 +266,6 @@
#![feature(float_from_str_radix)] #![feature(float_from_str_radix)]
#![feature(fn_traits)] #![feature(fn_traits)]
#![feature(fnbox)] #![feature(fnbox)]
#![feature(fused)]
#![feature(generic_param_attrs)] #![feature(generic_param_attrs)]
#![feature(hashmap_hasher)] #![feature(hashmap_hasher)]
#![feature(heap_api)] #![feature(heap_api)]
......
...@@ -905,7 +905,7 @@ fn next_back(&mut self) -> Option<&'a OsStr> { ...@@ -905,7 +905,7 @@ fn next_back(&mut self) -> Option<&'a OsStr> {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a> FusedIterator for Iter<'a> {} impl<'a> FusedIterator for Iter<'a> {}
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
...@@ -1008,7 +1008,7 @@ fn next_back(&mut self) -> Option<Component<'a>> { ...@@ -1008,7 +1008,7 @@ fn next_back(&mut self) -> Option<Component<'a>> {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a> FusedIterator for Components<'a> {} impl<'a> FusedIterator for Components<'a> {}
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
...@@ -1076,7 +1076,7 @@ fn next(&mut self) -> Option<Self::Item> { ...@@ -1076,7 +1076,7 @@ fn next(&mut self) -> Option<Self::Item> {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[unstable(feature = "path_ancestors", issue = "48581")]
impl<'a> FusedIterator for Ancestors<'a> {} impl<'a> FusedIterator for Ancestors<'a> {}
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
......
...@@ -70,7 +70,7 @@ fn next(&mut self) -> Option<char> { ...@@ -70,7 +70,7 @@ fn next(&mut self) -> Option<char> {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl FusedIterator for ToLowercase {} impl FusedIterator for ToLowercase {}
/// Returns an iterator that yields the uppercase equivalent of a `char`. /// Returns an iterator that yields the uppercase equivalent of a `char`.
...@@ -92,7 +92,7 @@ fn next(&mut self) -> Option<char> { ...@@ -92,7 +92,7 @@ fn next(&mut self) -> Option<char> {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl FusedIterator for ToUppercase {} impl FusedIterator for ToUppercase {}
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
......
...@@ -36,7 +36,6 @@ ...@@ -36,7 +36,6 @@
#![feature(str_internals)] #![feature(str_internals)]
#![feature(decode_utf8)] #![feature(decode_utf8)]
#![feature(fn_traits)] #![feature(fn_traits)]
#![feature(fused)]
#![feature(lang_items)] #![feature(lang_items)]
#![feature(non_exhaustive)] #![feature(non_exhaustive)]
#![feature(staged_api)] #![feature(staged_api)]
......
...@@ -127,7 +127,6 @@ fn size_hint(&self) -> (usize, Option<usize>) { ...@@ -127,7 +127,6 @@ fn size_hint(&self) -> (usize, Option<usize>) {
} }
} }
#[unstable(feature = "fused", issue = "35602")]
impl<I> FusedIterator for Utf16Encoder<I> impl<I> FusedIterator for Utf16Encoder<I>
where I: FusedIterator<Item = char> {} where I: FusedIterator<Item = char> {}
...@@ -186,5 +185,5 @@ fn next_back(&mut self) -> Option<&'a str> { ...@@ -186,5 +185,5 @@ fn next_back(&mut self) -> Option<&'a str> {
} }
} }
#[unstable(feature = "fused", issue = "35602")] #[stable(feature = "fused", since = "1.26.0")]
impl<'a> FusedIterator for SplitWhitespace<'a> {} impl<'a> FusedIterator for SplitWhitespace<'a> {}
...@@ -14,7 +14,6 @@ ...@@ -14,7 +14,6 @@
// `FusedIterator` in std but I was not able to isolate that into an // `FusedIterator` in std but I was not able to isolate that into an
// external crate. // external crate.
#![feature(fused)]
use std::iter::FusedIterator; use std::iter::FusedIterator;
struct Thing<'a>(&'a str); struct Thing<'a>(&'a str);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册