/// An iterator adapter that places a separator between all elements.
///
-/// This `struct` is created by [`Iterator::intersperse`]. See it's documentation
+/// This `struct` is created by [`Iterator::intersperse`]. See its documentation
/// for more information.
#[unstable(feature = "iter_intersperse", reason = "recently added", issue = "79524")]
#[derive(Debug, Clone)]
/// An iterator adapter that places a separator between all elements.
///
-/// This `struct` is created by [`Iterator::intersperse_with`]. See it's
+/// This `struct` is created by [`Iterator::intersperse_with`]. See its
/// documentation for more information.
#[unstable(feature = "iter_intersperse", reason = "recently added", issue = "79524")]
pub struct IntersperseWith<I, G>
/// Places a copy of `separator` between all elements.
///
+ /// In case the separator does not implement [`Clone`] or needs to be
+ /// computed every time, use [`intersperse_with`].
+ ///
/// # Examples
///
/// Basic usage:
/// ```
/// #![feature(iter_intersperse)]
///
- /// let hello = ["Hello", "World"].iter().copied().intersperse(" ").collect::<String>();
- /// assert_eq!(hello, "Hello World");
+ /// let hello = ["Hello", "World", "!"].iter().copied().intersperse(" ").collect::<String>();
+ /// assert_eq!(hello, "Hello World !");
/// ```
+ ///
+ /// [`Clone`]: crate::clone::Clone
+ /// [`intersperse_with`]: Iterator::intersperse_with
#[inline]
#[unstable(feature = "iter_intersperse", reason = "recently added", issue = "79524")]
fn intersperse(self, separator: Self::Item) -> Intersperse<Self>
/// ```
/// #![feature(iter_intersperse)]
///
- /// let src = ["Hello", "to", "all", "people"].iter().copied();
- /// let mut separator = [" ❤️ ", " 😀 "].iter().copied().cycle();
+ /// let src = ["Hello", "to", "all", "people", "!!"].iter().copied();
+ ///
+ /// let mut happy_emojis = [" ❤️ ", " 😀 "].iter().copied();
+ /// let separator = || happy_emojis.next().unwrap_or(" 🦀 ");
///
- /// let result = src.intersperse_with(|| separator.next().unwrap()).collect::<String>();
- /// assert_eq!(result, "Hello ❤️ to 😀 all ❤️ people");
+ /// let result = src.intersperse_with(separator).collect::<String>();
+ /// assert_eq!(result, "Hello ❤️ to 😀 all 🦀 people 🦀 !!");
/// ```
#[inline]
#[unstable(feature = "iter_intersperse", reason = "recently added", issue = "79524")]