Trait core::ops::Index [] [src]

pub trait Index<Idx: ?Sized> {
    type Output: ?Sized;
    fn index(&self, index: Idx) -> &Self::Output;
}

The Index trait is used to specify the functionality of indexing operations like arr[idx] when used in an immutable context.

Examples

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

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

#[derive(Copy, Clone)]
struct Foo;
struct Bar;

impl Index<Bar> for Foo {
    type Output = Foo;

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

fn main() {
    Foo[Bar];
}

Associated Types

type Output: ?Sized

The returned type after indexing

Required Methods

fn index(&self, index: Idx) -> &Self::Output

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

Implementors