@@ -571,16 +571,22 @@ pub trait Iterator {
571571
572572 /// Places a copy of `separator` between all elements.
573573 ///
574+ /// In case the separator does not implement [`Clone`] or needs to be
575+ /// computed every time, use [`intersperse_with`].
576+ ///
574577 /// # Examples
575578 ///
576579 /// Basic usage:
577580 ///
578581 /// ```
579582 /// #![feature(iter_intersperse)]
580583 ///
581- /// let hello = ["Hello", "World"].iter().copied().intersperse(" ").collect::<String>();
582- /// assert_eq!(hello, "Hello World");
584+ /// let hello = ["Hello", "World", "!" ].iter().copied().intersperse(" ").collect::<String>();
585+ /// assert_eq!(hello, "Hello World ! ");
583586 /// ```
587+ ///
588+ /// [`Clone`]: crate::clone::Clone
589+ /// [`intersperse_with`]: Iterator::intersperse_with
584590 #[ inline]
585591 #[ unstable( feature = "iter_intersperse" , reason = "recently added" , issue = "79524" ) ]
586592 fn intersperse ( self , separator : Self :: Item ) -> Intersperse < Self >
@@ -600,11 +606,13 @@ pub trait Iterator {
600606 /// ```
601607 /// #![feature(iter_intersperse)]
602608 ///
603- /// let src = ["Hello", "to", "all", "people"].iter().copied();
604- /// let mut separator = [" ❤️ ", " 😀 "].iter().copied().cycle();
609+ /// let src = ["Hello", "to", "all", "people", "!!"].iter().copied();
610+ ///
611+ /// let mut happy_emojis = [" ❤️ ", " 😀 "].iter().copied();
612+ /// let separator = || happy_emojis.next().unwrap_or(" 🦀 ");
605613 ///
606- /// let result = src.intersperse_with(|| separator.next().unwrap() ).collect::<String>();
607- /// assert_eq!(result, "Hello ❤️ to 😀 all ❤️ people");
614+ /// let result = src.intersperse_with(separator).collect::<String>();
615+ /// assert_eq!(result, "Hello ❤️ to 😀 all 🦀 people 🦀 !! ");
608616 /// ```
609617 #[ inline]
610618 #[ unstable( feature = "iter_intersperse" , reason = "recently added" , issue = "79524" ) ]
0 commit comments