Rust errors / Types and traits
Rust compiler error · checked with rustc 1.99.0
Rust error E0620: cast to unsized type: `&[usize; 2]` as `[usize]`
What it meansA cast to an unsized type was attempted.
What rustc prints
error[E0620]: cast to unsized type: `&[usize; 2]` as `[usize]` --> main.rs:3:9 | 3 | let x = &[1_usize, 2] as [usize]; // error: cast to unsized type: `&[usize; 2]` | ^^^^^^^^^^^^^^^^^^^^^^^^ | help: consider casting to a reference instead | 3 | let x = &[1_usize, 2] as &[usize]; // error: cast to unsized type: `&[usize; 2]` | +
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
A cast to an unsized type was attempted.
Erroneous code example:
let x = &[1_usize, 2] as [usize]; // error: cast to unsized type: `&[usize; 2]`
// as `[usize]`
In Rust, some types don't have a known size at compile-time. For example, in a slice type like [u32], the number of elements is not known at compile-time and hence the overall size cannot be computed. As a result, such types can only be manipulated through a reference (e.g., &T or &mut T) or other pointer-type (e.g., Box or Rc). Try casting to a reference instead:
let x = &[1_usize, 2] as &[usize]; // ok!From rustc --explain E0620 (1.99.0), part of the Rust project, MIT or Apache-2.0. Official page.
Related errors
- E0308mismatched types
- E0277the trait bound is not satisfied
- E0599no method named X found in the current scope
- E0433failed to resolve
- E0615attempted to take value of method on type
- E0617can't pass `f32` to variadic function
- E0631type mismatch in closure arguments
- E0634type has conflicting packed representation hints
Up next
Often hit nextE0308: mismatched typesA related error from the same family.Read it next →Did this answer your question?