Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Rollup merge of #74989 - pubfnbar:impl-array-indexing, r=KodrAus
Implement `Index` and `IndexMut` for arrays Adds implementations of `Index` and `IndexMut` for arrays that simply forward to the slice indexing implementation in order to fix the following problem: If you implement `Index<MyIndexType>` for an array, you lose all the other indexing functionality that used to be available to the array via its implicit coercion to a slice. An example of what I'm talking about: ```rust use std::ops::Index; pub enum MyIndexType { _0, _1, _2, _3, _4, _5, _6, _7, } impl<T> Index<MyIndexType> for [T; 8] { type Output = T; fn index(&self, index: MyIndexType) -> &T { unsafe { self.get_unchecked(index as usize) } } } fn main() { let array = [11u8; 8]; println!("{:?}", array[MyIndexType::_0]); // OK println!("{:?}", array[0usize]); // error[E0277] // ^^^^^^^^^^^^^ `[u8; 8]` cannot be indexed by `usize` } ```
- Loading branch information