Function creusot_contracts::std::iter::repeat_n
source · pub fn repeat_n<T>(element: T, count: usize) -> RepeatN<T> ⓘwhere
T: Clone,
🔬This is a nightly-only experimental API. (
iter_repeat_n
)Expand description
Creates a new iterator that repeats a single element a given number of times.
The repeat_n()
function repeats a single value exactly n
times.
This is very similar to using repeat()
with Iterator::take()
,
but there are two differences:
repeat_n()
can return the original value, rather than always cloning.repeat_n()
produces anExactSizeIterator
.
§Examples
Basic usage:
#![feature(iter_repeat_n)]
use std::iter;
// four of the number four:
let mut four_fours = iter::repeat_n(4, 4);
assert_eq!(Some(4), four_fours.next());
assert_eq!(Some(4), four_fours.next());
assert_eq!(Some(4), four_fours.next());
assert_eq!(Some(4), four_fours.next());
// no more fours
assert_eq!(None, four_fours.next());
For non-Copy
types,
#![feature(iter_repeat_n)]
use std::iter;
let v: Vec<i32> = Vec::with_capacity(123);
let mut it = iter::repeat_n(v, 5);
for i in 0..4 {
// It starts by cloning things
let cloned = it.next().unwrap();
assert_eq!(cloned.len(), 0);
assert_eq!(cloned.capacity(), 0);
}
// ... but the last item is the original one
let last = it.next().unwrap();
assert_eq!(last.len(), 0);
assert_eq!(last.capacity(), 123);
// ... and now we're done
assert_eq!(None, it.next());