error[E0049]: associated function `outer` has 0 type parameters but its trait declaration has 1 type parameter --> $DIR/ice-index-out-of-bounds-issue-117446.rs:12:13 | LL | fn outer() -> Option<()>; | - expected 1 type parameter ... LL | fn outer() -> Option<()> { | ^ found 0 type parameters error[E0308]: mismatched types --> $DIR/ice-index-out-of-bounds-issue-117446.rs:12:19 | LL | fn outer() -> Option<()> { | ----- ^^^^^^^^^^ expected `Option<()>`, found `()` | | | implicitly returns `()` as its body has no tail or `return` expression | = note: expected enum `Option<()>` found unit type `()` error[E0401]: can't reference `Self` constructor from outer item --> $DIR/ice-index-out-of-bounds-issue-117446.rs:17:22 | LL | impl<'a, T> Foo<'a> for Repeated { | ----------------------------------- the inner item doesn't inherit generics from this impl, so `Self` is invalid to reference ... LL | _ => Self(unimplemented!()), | ^^^^ help: replace `Self` with the actual type: `Repeated` error: aborting due to 3 previous errors Some errors have detailed explanations: E0049, E0308, E0401. For more information about an error, try `rustc --explain E0049`.