Trait std::ops::IndexMutUnstable [-]  [+] [src]

pub trait IndexMut<Index> {
    type Output;
    fn index_mut(&'a mut self, index: &Index) -> &'a mut <Self as IndexMut<Index>>::Output;
}

The IndexMut trait is used to specify the functionality of indexing operations like arr[idx], when used in a mutable context.

Example

A trivial implementation of IndexMut. When Foo[Foo] happens, it ends up calling index_mut, and therefore, main prints Indexing!.

#![feature(associated_types)] use std::ops::IndexMut; #[derive(Copy)] struct Foo; impl IndexMut<Foo> for Foo { type Output = Foo; fn index_mut<'a>(&'a mut self, _index: &Foo) -> &'a mut Foo { println!("Indexing!"); self } } fn main() { &mut Foo[Foo]; }
#![feature(associated_types)]

use std::ops::IndexMut;

#[derive(Copy)]
struct Foo;

impl IndexMut<Foo> for Foo {
    type Output = Foo;

    fn index_mut<'a>(&'a mut self, _index: &Foo) -> &'a mut Foo {
        println!("Indexing!");
        self
    }
}

fn main() {
    &mut Foo[Foo];
}

Required Methods

type Output

fn index_mut(&'a mut self, index: &Index) -> &'a mut <Self as IndexMut<Index>>::Output

The method for the indexing (Foo[Bar]) operation

Implementors