| `impl Trait` is only allowed as a function return and argument type. | |
| Erroneous code example: | |
| ```compile_fail,E0562 | |
| fn main() { | |
| let count_to_ten: impl Iterator<Item=usize> = 0..10; | |
| // error: `impl Trait` not allowed outside of function and inherent method | |
| // return types | |
| for i in count_to_ten { | |
| println!("{}", i); | |
| } | |
| } | |
| ``` | |
| Make sure `impl Trait` appears in a function signature. | |
| ``` | |
| fn count_to_n(n: usize) -> impl Iterator<Item=usize> { | |
| 0..n | |
| } | |
| fn main() { | |
| for i in count_to_n(10) { // ok! | |
| println!("{}", i); | |
| } | |
| } | |
| ``` | |
| See the [reference] for more details on `impl Trait`. | |
| [reference]: https://doc.rust-lang.org/stable/reference/types/impl-trait.html |