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

Erroneous code example:

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

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

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

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