## Keyboard shortcuts

Press `←` or `→` to navigate between chapters

Press `S` or `/` to search in the book

Press `?` to show this help

Press `Esc` to hide this help

# Error code E0424

The `self` keyword was used inside of an associated function without a “`self` receiver” parameter.

Erroneous code example:

    #![allow(unused)]
    fn main() {
    struct Foo;

    impl Foo {
        // `bar` is a method, because it has a receiver parameter.
        fn bar(&self) {}

        // `foo` is not a method, because it has no receiver parameter.
        fn foo() {
            self.bar(); // error: `self` value is a keyword only available in
                        //        methods with a `self` parameter
        }
    }
    }

The `self` keyword can only be used inside methods, which are associated functions (functions defined inside of a `trait` or `impl` block) that have a `self` receiver as its first parameter, like `self`, `&self`, `&mut self` or `self: &mut Pin<Self>` (this last one is an example of an “arbitrary `self` type”).

Check if the associated function’s parameter list should have contained a `self` receiver for it to be a method, and add it if so. Example:

    #![allow(unused)]
    fn main() {
    struct Foo;

    impl Foo {
        fn bar(&self) {}

        fn foo(self) { // `foo` is now a method.
            self.bar(); // ok!
        }
    }
    }