| An inherent implementation was defined for something which isn't a struct nor |
| an enum. |
| |
| Erroneous code example: |
| |
| ```compile_fail,E0118 |
| impl (u8, u8) { // error: no base type found for inherent implementation |
| fn get_state(&self) -> String { |
| // ... |
| } |
| } |
| ``` |
| |
| To fix this error, please implement a trait on the type or wrap it in a struct. |
| Example: |
| |
| ``` |
| // we create a trait here |
| trait LiveLongAndProsper { |
| fn get_state(&self) -> String; |
| } |
| |
| // and now you can implement it on (u8, u8) |
| impl LiveLongAndProsper for (u8, u8) { |
| fn get_state(&self) -> String { |
| "He's dead, Jim!".to_owned() |
| } |
| } |
| ``` |
| |
| Alternatively, you can create a newtype. A newtype is a wrapping tuple-struct. |
| For example, `NewType` is a newtype over `Foo` in `struct NewType(Foo)`. |
| Example: |
| |
| ``` |
| struct TypeWrapper((u8, u8)); |
| |
| impl TypeWrapper { |
| fn get_state(&self) -> String { |
| "Fascinating!".to_owned() |
| } |
| } |
| ``` |