index out of bound in slice not caught at compilation

03036f8
Opened by Antoine Grondin at 2020-10-09 10:16:18

Hi! I'm just learning Rust! I saw this odd behavior, where the compiler will nicely tell me that an index in an array is impossible at compile time, but won't tell me that an index in a slice of known size is also impossible.

I thought I'd share.

This fails at compile time:

let y = [1];
println!("y={}", y[1]); 

This fails at runtime:

let y = [1];
println!("y={}", &y[0..1][1]); 

Would be cool if &y[0..1][1] also failed at compile time.

  1. This may need a significant improvement of the compiler, but it's worth doing.

    leonardo-m at 2016-11-28 17:54:17

  2. There are currently lints in clippy for this, I believe. Not sure if the compiler ever plans to add these.

    Clar Fon at 2016-11-28 19:52:55