]> git.lizzy.rs Git - rust.git/commitdiff
doc: introduce `once` in `iter::chain` document
authorLzu Tao <taolzu@gmail.com>
Mon, 28 Oct 2019 03:22:59 +0000 (03:22 +0000)
committerLzu Tao <taolzu@gmail.com>
Mon, 28 Oct 2019 03:22:59 +0000 (03:22 +0000)
src/libcore/iter/traits/iterator.rs

index a272035150a1587f7551b38de7f8663e1c5290f5..7ffc8b3729cb490c1e149b97d5b98bc971df1ef9 100644 (file)
@@ -384,6 +384,9 @@ fn step_by(self, step: usize) -> StepBy<Self> where Self: Sized {
     ///
     /// In other words, it links two iterators together, in a chain. ðŸ”—
     ///
+    /// [`once`] is commonly used to adapt a single value into a chain of
+    /// other kinds of iteration.
+    ///
     /// # Examples
     ///
     /// Basic usage:
@@ -408,9 +411,6 @@ fn step_by(self, step: usize) -> StepBy<Self> where Self: Sized {
     /// [`Iterator`] itself. For example, slices (`&[T]`) implement
     /// [`IntoIterator`], and so can be passed to `chain()` directly:
     ///
-    /// [`IntoIterator`]: trait.IntoIterator.html
-    /// [`Iterator`]: trait.Iterator.html
-    ///
     /// ```
     /// let s1 = &[1, 2, 3];
     /// let s2 = &[4, 5, 6];
@@ -425,6 +425,21 @@ fn step_by(self, step: usize) -> StepBy<Self> where Self: Sized {
     /// assert_eq!(iter.next(), Some(&6));
     /// assert_eq!(iter.next(), None);
     /// ```
+    ///
+    /// If you work with Windows API, you may wish to convert [`OsStr`] to `Vec<u16>`:
+    ///
+    /// ```
+    /// #[cfg(windows)]
+    /// fn os_str_to_utf16(s: &std::ffi::OsStr) -> Vec<u16> {
+    ///     use std::os::windows::ffi::OsStrExt;
+    ///     s.encode_wide().chain(std::iter::once(0)).collect()
+    /// }
+    /// ```
+    ///
+    /// [`once`]: fn.once.html
+    /// [`Iterator`]: trait.Iterator.html
+    /// [`IntoIterator`]: trait.IntoIterator.html
+    /// [`OsStr`]: ../../std/ffi/struct.OsStr.html
     #[inline]
     #[stable(feature = "rust1", since = "1.0.0")]
     fn chain<U>(self, other: U) -> Chain<Self, U::IntoIter> where