From rust-lang/rust#73139 (comment):
The index is always less than the length. So even if the length is usize::MAX, the index will be at most MAX - 1 and so cannot overflow.
It would be great to tell rustc this is the case by using rustc_layout_scalar_valid_range_end(usize::MAX - 1). That would allow storing Option<index> in usize instead of needing an extra bit, which in some cases could double the size of the struct due to alignment requirements.
Failing that (since rustc_layout_scalar_valid_range_end is unstable and likely will never be stabilized), would it be possible to document that the index is always less than usize::MAX?