Skip to content

Commit

Permalink
Stabilize iter::repeat_n
Browse files Browse the repository at this point in the history
  • Loading branch information
scottmcm committed Aug 20, 2024
1 parent ebe99f3 commit 126935f
Show file tree
Hide file tree
Showing 5 changed files with 10 additions and 14 deletions.
1 change: 0 additions & 1 deletion alloc/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,6 @@
#![feature(inplace_iteration)]
#![feature(iter_advance_by)]
#![feature(iter_next_chunk)]
#![feature(iter_repeat_n)]
#![feature(layout_for_ptr)]
#![feature(local_waker)]
#![feature(maybe_uninit_slice)]
Expand Down
2 changes: 1 addition & 1 deletion core/src/iter/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -436,7 +436,7 @@ pub use self::sources::{once, Once};
pub use self::sources::{once_with, OnceWith};
#[stable(feature = "rust1", since = "1.0.0")]
pub use self::sources::{repeat, Repeat};
#[unstable(feature = "iter_repeat_n", issue = "104434")]
#[stable(feature = "iter_repeat_n", since = "CURRENT_RUSTC_VERSION")]
pub use self::sources::{repeat_n, RepeatN};
#[stable(feature = "iterator_repeat_with", since = "1.28.0")]
pub use self::sources::{repeat_with, RepeatWith};
Expand Down
2 changes: 1 addition & 1 deletion core/src/iter/sources.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ pub use self::once::{once, Once};
pub use self::once_with::{once_with, OnceWith};
#[stable(feature = "rust1", since = "1.0.0")]
pub use self::repeat::{repeat, Repeat};
#[unstable(feature = "iter_repeat_n", issue = "104434")]
#[stable(feature = "iter_repeat_n", since = "CURRENT_RUSTC_VERSION")]
pub use self::repeat_n::{repeat_n, RepeatN};
#[stable(feature = "iterator_repeat_with", since = "1.28.0")]
pub use self::repeat_with::{repeat_with, RepeatWith};
Expand Down
18 changes: 8 additions & 10 deletions core/src/iter/sources/repeat_n.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ use crate::num::NonZero;
/// Basic usage:
///
/// ```
/// #![feature(iter_repeat_n)]
/// use std::iter;
///
/// // four of the number four:
Expand All @@ -36,7 +35,6 @@ use crate::num::NonZero;
/// For non-`Copy` types,
///
/// ```
/// #![feature(iter_repeat_n)]
/// use std::iter;
///
/// let v: Vec<i32> = Vec::with_capacity(123);
Expand All @@ -58,7 +56,7 @@ use crate::num::NonZero;
/// assert_eq!(None, it.next());
/// ```
#[inline]
#[unstable(feature = "iter_repeat_n", issue = "104434")]
#[stable(feature = "iter_repeat_n", since = "CURRENT_RUSTC_VERSION")]
pub fn repeat_n<T: Clone>(element: T, count: usize) -> RepeatN<T> {
let mut element = ManuallyDrop::new(element);

Expand All @@ -77,7 +75,7 @@ pub fn repeat_n<T: Clone>(element: T, count: usize) -> RepeatN<T> {
/// This `struct` is created by the [`repeat_n()`] function.
/// See its documentation for more.
#[derive(Clone, Debug)]
#[unstable(feature = "iter_repeat_n", issue = "104434")]
#[stable(feature = "iter_repeat_n", since = "CURRENT_RUSTC_VERSION")]
pub struct RepeatN<A> {
count: usize,
// Invariant: has been dropped iff count == 0.
Expand All @@ -101,14 +99,14 @@ impl<A> RepeatN<A> {
}
}

#[unstable(feature = "iter_repeat_n", issue = "104434")]
#[stable(feature = "iter_repeat_n", since = "CURRENT_RUSTC_VERSION")]
impl<A> Drop for RepeatN<A> {
fn drop(&mut self) {
self.take_element();
}
}

#[unstable(feature = "iter_repeat_n", issue = "104434")]
#[stable(feature = "iter_repeat_n", since = "CURRENT_RUSTC_VERSION")]
impl<A: Clone> Iterator for RepeatN<A> {
type Item = A;

Expand Down Expand Up @@ -156,14 +154,14 @@ impl<A: Clone> Iterator for RepeatN<A> {
}
}

#[unstable(feature = "iter_repeat_n", issue = "104434")]
#[stable(feature = "iter_repeat_n", since = "CURRENT_RUSTC_VERSION")]
impl<A: Clone> ExactSizeIterator for RepeatN<A> {
fn len(&self) -> usize {
self.count
}
}

#[unstable(feature = "iter_repeat_n", issue = "104434")]
#[stable(feature = "iter_repeat_n", since = "CURRENT_RUSTC_VERSION")]
impl<A: Clone> DoubleEndedIterator for RepeatN<A> {
#[inline]
fn next_back(&mut self) -> Option<A> {
Expand All @@ -181,12 +179,12 @@ impl<A: Clone> DoubleEndedIterator for RepeatN<A> {
}
}

#[unstable(feature = "iter_repeat_n", issue = "104434")]
#[stable(feature = "iter_repeat_n", since = "CURRENT_RUSTC_VERSION")]
impl<A: Clone> FusedIterator for RepeatN<A> {}

#[unstable(feature = "trusted_len", issue = "37572")]
unsafe impl<A: Clone> TrustedLen for RepeatN<A> {}
#[unstable(feature = "trusted_len_next_unchecked", issue = "37572")]
#[stable(feature = "iter_repeat_n", since = "CURRENT_RUSTC_VERSION")]
impl<A: Clone> UncheckedIterator for RepeatN<A> {
#[inline]
unsafe fn next_unchecked(&mut self) -> Self::Item {
Expand Down
1 change: 0 additions & 1 deletion core/tests/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,6 @@
#![feature(iter_next_chunk)]
#![feature(iter_order_by)]
#![feature(iter_partition_in_place)]
#![feature(iter_repeat_n)]
#![feature(iterator_try_collect)]
#![feature(iterator_try_reduce)]
#![feature(layout_for_ptr)]
Expand Down

0 comments on commit 126935f

Please sign in to comment.