diff options
| author | Will Speak <lithiumflame@gmail.com> | 2017-09-18 07:38:32 +0100 |
|---|---|---|
| committer | Will Speak <lithiumflame@gmail.com> | 2017-09-18 07:41:38 +0100 |
| commit | ebd0e4f1996053c1d63709b169682ee8586ae65f (patch) | |
| tree | 70cb307e353018f108c4942d5beb6c946ca250d4 | |
| parent | caad2560bfbd0e2b0e0dcb6882395c1523a1aadc (diff) | |
Add Example of `IntoIterator` as Trait Bound to Docs
Part of #44600.
| -rw-r--r-- | src/libcore/iter/traits.rs | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/libcore/iter/traits.rs b/src/libcore/iter/traits.rs index 2af129a67bd..7ef50396c82 100644 --- a/src/libcore/iter/traits.rs +++ b/src/libcore/iter/traits.rs @@ -196,6 +196,23 @@ pub trait FromIterator<A>: Sized { /// assert_eq!(i as i32, n); /// } /// ``` +/// +/// It is common to use `IntoIterator` as a trait bound. This allows +/// the input collection type to change, so long as it is still an +/// iterator. Additional bounds can be specified by restricting on +/// `Item`: +/// +/// ```rust +/// fn collect_as_strings<T>(collection: T) -> Vec<String> +/// where T: IntoIterator, +/// T::Item : std::fmt::Debug, +/// { +/// collection +/// .into_iter() +/// .map(|item| format!("{:?}", item)) +/// .collect() +/// } +/// ``` #[stable(feature = "rust1", since = "1.0.0")] pub trait IntoIterator { /// The type of the elements being iterated over. |
