Something other than a type has been used when one was expected. Erroneous code examples: ```compile_fail,E0573 enum Dragon { Born, } fn oblivion() -> Dragon::Born { // error! Dragon::Born } const HOBBIT: u32 = 2; impl HOBBIT {} // error! enum Wizard { Gandalf, Saruman, } trait Isengard { fn wizard(_: Wizard::Saruman); // error! } ``` In all these errors, a type was expected. For example, in the first error, if we want to return the `Born` variant from the `Dragon` enum, we must set the function to return the enum and not its variant: ``` enum Dragon { Born, } fn oblivion() -> Dragon { // ok! Dragon::Born } ``` In the second error, you can't implement something on an item, only on types. We would need to create a new type if we wanted to do something similar: ``` struct Hobbit(u32); // we create a new type const HOBBIT: Hobbit = Hobbit(2); impl Hobbit {} // ok! ``` In the third case, we tried to only expect one variant of the `Wizard` enum, which is not possible. To make this work, we need to using pattern matching over the `Wizard` enum: ``` enum Wizard { Gandalf, Saruman, } trait Isengard { fn wizard(w: Wizard) { // ok! match w { Wizard::Saruman => { // do something } _ => {} // ignore everything else } } } ```