# Error code E0774

`derive` was applied on something which is not a struct, a union or an enum.

Erroneous code example:

    #![allow(unused)]
    fn main() {
    trait Foo {
        #[derive(Clone)] // error!
        type Bar;
    }
    }

As said above, the `derive` attribute is only allowed on structs, unions or enums:

    #![allow(unused)]
    fn main() {
    #[derive(Clone)] // ok!
    struct Bar {
        field: u32,
    }
    }

You can find more information about `derive` in the Rust Book.