error[E0401]: can't use type parameters from outer function --> $DIR/E0401.rs:14:38 | LL | fn foo(x: T) { | - type variable from outer function LL | fn bar, W: Fn()>(y: T) { //~ ERROR E0401 | -------------------------- ^ use of type variable from outer function | | | help: try using a local type parameter instead: `bar, W: Fn(), T>` error[E0401]: can't use type parameters from outer function --> $DIR/E0401.rs:19:16 | LL | fn foo(x: T) { | - type variable from outer function ... LL | (y: T) { //~ ERROR E0401 | ^ use of type variable from outer function | = help: try using a local type parameter instead error[E0401]: can't use type parameters from outer function --> $DIR/E0401.rs:32:25 | LL | impl Iterator for A { | ---- `Self` type implicitely declared here, on the `impl` ... LL | fn helper(sel: &Self) -> u8 { //~ ERROR E0401 | ------ ^^^^ use of type variable from outer function | | | help: try using a local type parameter instead: `helper` error: aborting due to 3 previous errors If you want more information on this error, try using "rustc --explain E0401"