| An invalid cast was attempted. |
| |
| Erroneous code examples: |
| |
| ```compile_fail,E0605 |
| let x = 0u8; |
| x as Vec<u8>; // error: non-primitive cast: `u8` as `std::vec::Vec<u8>` |
| |
| // Another example |
| |
| let v = core::ptr::null::<u8>(); // So here, `v` is a `*const u8`. |
| v as &u8; // error: non-primitive cast: `*const u8` as `&u8` |
| ``` |
| |
| Only primitive types can be cast into each other. Examples: |
| |
| ``` |
| let x = 0u8; |
| x as u32; // ok! |
| |
| let v = core::ptr::null::<u8>(); |
| v as *const i8; // ok! |
| ``` |
| |
| For more information about casts, take a look at the Type cast section in |
| [The Reference Book][1]. |
| |
| [1]: https://doc.rust-lang.org/reference/expressions/operator-expr.html#type-cast-expressions |