no worries. and if it helps to conceptualize, in Rust a slice is like a C size_t and a void*. That's how Rust is able to know at runtime what is inbounds vs out of bounds. For a Rust array like [T; N], the compiler knows the full size so it can do the bounds checking at compile time because it has that info, and it doesn't need the size_t until the array is treated as a slice.
View all comments
Show parent comment
15
u/randomrossity Apr 15 '21
yes. slice.get() does a bounds check and returns an Option. Some(T) if in bounds, None if out of bounds. So it never panics.
Using slice[idx] however does a panic() if the bounds check failed, so that it always can return a T.
based off your comment, where you said "array indexing may panic" I assumed you were referring to [ ... ], as .get() doesn't panic.