# Error code E0518

An `#[inline(..)]` attribute was incorrectly placed on something other than a function or method.

Example of erroneous code:

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

    #[inline(never)]
    impl Foo {
        // ...
    }
    }

`#[inline]` hints the compiler whether or not to attempt to inline a method or function. By default, the compiler does a pretty good job of figuring this out itself, but if you feel the need for annotations, `#[inline(always)]` and `#[inline(never)]` can override or force the compiler's decision.

If you wish to apply this attribute to all methods in an impl, manually annotate each method; it is not possible to annotate the entire impl with an `#[inline]` attribute.