可变索引

Index 只提供了只读访问权限,并不允许你修改获取的值。

IndexMut

如果你想允许可变性,就需要实现 IndexMut 特质。

#![allow(unused)]
fn main() {
// 略微简化的版本
pub trait IndexMut<Idx>: Index<Idx> {
    // 必须实现的方法
    fn index_mut(&mut self, index: Idx) -> &mut Self::Output;
}
}

只有当类型已经实现了 Index 特质后,才能实现 IndexMut,因为它解锁了额外的修改能力。