/// An iterator adaptor to insert a particular value /// between each element of the adapted iterator. /// /// Iterator element type is `I::Item` /// /// This iterator is *fused*. /// /// See [`.intersperse()`](crate::Itertools::intersperse) for more information. pubtype Intersperse<I> = IntersperseWith<I, IntersperseElementSimple<<I as Iterator>::Item>>;
/// Create a new Intersperse iterator pubfn intersperse<I>(iter: I, elt: I::Item) -> Intersperse<I> where
I: Iterator,
{
intersperse_with(iter, IntersperseElementSimple(elt))
}
impl<Item, F: FnMut() -> Item> IntersperseElement<Item> for F { fn generate(&mutself) -> Item { self()
}
}
/// An iterator adaptor to insert a particular value created by a function /// between each element of the adapted iterator. /// /// Iterator element type is `I::Item` /// /// This iterator is *fused*. /// /// See [`.intersperse_with()`](crate::Itertools::intersperse_with) for more information. #[must_use = "iterator adaptors are lazy and do nothing unless consumed"] #[derive(Clone, Debug)] pubstruct IntersperseWith<I, ElemF> where
I: Iterator,
{
element: ElemF,
iter: Fuse<I>, /// `peek` is None while no item have been taken out of `iter` (at definition). /// Then `peek` will alternatively be `Some(None)` and `Some(Some(item))`, /// where `None` indicates it's time to generate from `element` (unless `iter` is empty).
peek: Option<Option<I::Item>>,
}
/// Create a new `IntersperseWith` iterator pubfn intersperse_with<I, ElemF>(iter: I, elt: ElemF) -> IntersperseWith<I, ElemF> where
I: Iterator,
{
IntersperseWith {
peek: None,
iter: iter.fuse(),
element: elt,
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.