| Something other than a struct, variant or union has been used when one was | |
| expected. | |
| Erroneous code example: | |
| ```compile_fail,E0574 | |
| mod mordor {} | |
| let sauron = mordor { x: () }; // error! | |
| enum Jak { | |
| Daxter { i: isize }, | |
| } | |
| let eco = Jak::Daxter { i: 1 }; | |
| match eco { | |
| Jak { i } => {} // error! | |
| } | |
| ``` | |
| In all these errors, a type was expected. For example, in the first error, | |
| we tried to instantiate the `mordor` module, which is impossible. If you want | |
| to instantiate a type inside a module, you can do it as follow: | |
| ``` | |
| mod mordor { | |
| pub struct TheRing { | |
| pub x: usize, | |
| } | |
| } | |
| let sauron = mordor::TheRing { x: 1 }; // ok! | |
| ``` | |
| In the second error, we tried to bind the `Jak` enum directly, which is not | |
| possible: you can only bind one of its variants. To do so: | |
| ``` | |
| enum Jak { | |
| Daxter { i: isize }, | |
| } | |
| let eco = Jak::Daxter { i: 1 }; | |
| match eco { | |
| Jak::Daxter { i } => {} // ok! | |
| } | |
| ``` |