use core::iter::{empty, from_fn, once, once_with, repeat, repeat_n, repeat_with, successors, zip};
#[doc = crate::_tags!(iterator namespace)]
#[doc = crate::_doc_location!("data/access/iter")]
#[derive(Debug)]
pub struct Iter;
impl Iter {
pub const fn empty<T>() -> crate::IterEmpty<T> {
empty()
}
pub fn from_fn<T, F>(f: F) -> crate::IterFromFn<F>
where
F: FnMut() -> Option<T>,
{
from_fn(f)
}
pub fn once<T>(value: T) -> crate::IterOnce<T> {
once(value)
}
pub fn once_with<A, F>(make: F) -> crate::IterOnceWith<F>
where
F: FnOnce() -> A,
{
once_with(make)
}
pub fn repeat<T>(elt: T) -> crate::IterRepeat<T>
where
T: Clone,
{
repeat(elt)
}
pub fn repeat_n<T>(element: T, count: usize) -> crate::IterRepeatN<T>
where
T: Clone,
{
repeat_n(element, count)
}
pub fn repeat_with<A, F>(repeater: F) -> crate::IterRepeatWith<F>
where
F: FnMut() -> A,
{
repeat_with(repeater)
}
pub fn successors<T, F>(first: Option<T>, succ: F) -> crate::IterSuccessors<T, F>
where
F: FnMut(&T) -> Option<T>,
{
successors(first, succ)
}
pub fn zip<A, B>(
a: A,
b: B,
) -> crate::IterZip<<A as IntoIterator>::IntoIter, <B as IntoIterator>::IntoIter>
where
A: IntoIterator,
B: IntoIterator,
{
zip(a, b)
}
}