| `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 |