error: incorrect function inside `extern` block --> $DIR/issue-97194.rs:2:8 | LL | extern "C" { | ---------- `extern` blocks define existing foreign functions and functions inside of them cannot have a body LL | fn bget(&self, index: [usize; Self::DIM]) -> bool { | ________^^^^___________________________________________- | | | | | cannot have a body LL | | LL | | LL | | LL | | type T<'a> = &'a str; LL | | } | |_____- help: remove the invalid body: `;` | = help: you might have meant to write a function accessible through FFI, which can be done by writing `extern fn` outside of the `extern` block = note: for more information, visit https://doc.rust-lang.org/std/keyword.extern.html error: `self` parameter is only allowed in associated functions --> $DIR/issue-97194.rs:2:13 | LL | fn bget(&self, index: [usize; Self::DIM]) -> bool { | ^^^^^ not semantically valid as function parameter | = note: associated functions are those in `impl` or `trait` definitions error[E0433]: failed to resolve: `Self` is only available in impls, traits, and type definitions --> $DIR/issue-97194.rs:2:35 | LL | fn bget(&self, index: [usize; Self::DIM]) -> bool { | ^^^^ `Self` is only available in impls, traits, and type definitions error: aborting due to 3 previous errors For more information about this error, try `rustc --explain E0433`.