Rust errors / Attributes, macros and features
Rust compiler error · checked with rustc 1.99.0
Rust error E0774: `derive` may only be applied to `struct`s, `enum`s and `union`s
What it meansderive was applied on something which is not a struct, a union or an enum.
What rustc prints
error[E0774]: `derive` may only be applied to `struct`s, `enum`s and `union`s
--> main.rs:2:5
|
2 | #[derive(Clone)] // error!
| ^^^^^^^^^^^^^^^^ not applicable here
3 | type Bar;
| --------- not a `struct`, `enum` or `union`Real output of rustc 1.99.0 compiling the official example below (2021 edition). Your names and line numbers will differ; the first line is the part to match.
The compiler team's explanation
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.
From rustc --explain E0774 (1.99.0), part of the Rust project, MIT or Apache-2.0. Official page.
Related errors
- E0658is unstable
- E0732`#[repr(inttype)]` must be specified for enums with explicit discriminants and non-unit variants
- E0736attribute incompatible with `#[unsafe(naked)]`
- E0795`Some` is an enum variant; expected field at end of `offset_of`
- E0802`CoercePointee` can only be derived on `struct`s with `#[repr(transparent)]`
Up next
Often hit nextE0658: is unstableA related error from the same family.Read it next →Did this answer your question?