Trait std::ops::IndexUnstable
[-]
[+]
[src]
pub trait Index<Index> {
type Output;
fn index(&'a self, index: &Index) -> &'a <Self as Index<Index>>::Output;
}The Index trait is used to specify the functionality of indexing operations
like arr[idx] when used in an immutable context.
Example
A trivial implementation of Index. When Foo[Foo] happens, it ends up
calling index, and therefore, main prints Indexing!.
#![feature(associated_types)] use std::ops::Index; #[derive(Copy)] struct Foo; impl Index<Foo> for Foo { type Output = Foo; fn index<'a>(&'a self, _index: &Foo) -> &'a Foo { println!("Indexing!"); self } } fn main() { Foo[Foo]; }
Required Methods
type Output
fn index(&'a self, index: &Index) -> &'a <Self as Index<Index>>::Output
The method for the indexing (Foo[Bar]) operation
Implementors
impl<T> Index<usize> for [T]impl<T> Index<Range<usize>> for [T]impl<T> Index<RangeTo<usize>> for [T]impl<T> Index<RangeFrom<usize>> for [T]impl<T> Index<FullRange> for [T]impl<'a, T> Index<Range<usize>> for Iter<'a, T>impl<'a, T> Index<RangeTo<usize>> for Iter<'a, T>impl<'a, T> Index<RangeFrom<usize>> for Iter<'a, T>impl<'a, T> Index<FullRange> for Iter<'a, T>impl<'a, T> Index<Range<usize>> for IterMut<'a, T>impl<'a, T> Index<RangeTo<usize>> for IterMut<'a, T>impl<'a, T> Index<RangeFrom<usize>> for IterMut<'a, T>impl<'a, T> Index<FullRange> for IterMut<'a, T>impl Index<Range<usize>> for strimpl Index<RangeTo<usize>> for strimpl Index<RangeFrom<usize>> for strimpl Index<FullRange> for strimpl<K, Q: ?Sized, V, S, H> Index<Q> for HashMap<K, V, S> where K: Eq + Hash<H>, Q: Eq + Hash<H> + BorrowFrom<K>, S: HashState<Hasher=H>, H: Hasher<Output=u64>impl<K, Q: ?Sized, V, S, H> Index<Q> for HashMap<K, V, S> where K: Eq + Hash<H>, Q: Eq + Hash<H> + BorrowFrom<K>, S: HashState<Hasher=H>, H: Hasher<Output=u64>impl Index<usize> for Bitvimpl<K: Ord, Q, V> Index<Q> for BTreeMap<K, V>impl<A> Index<usize> for RingBuf<A>impl Index<Range<usize>> for Stringimpl Index<RangeTo<usize>> for Stringimpl Index<RangeFrom<usize>> for Stringimpl Index<FullRange> for Stringimpl<T> Index<usize> for Vec<T>impl<T> Index<Range<usize>> for Vec<T>impl<T> Index<RangeTo<usize>> for Vec<T>impl<T> Index<RangeFrom<usize>> for Vec<T>impl<T> Index<FullRange> for Vec<T>impl<V> Index<usize> for VecMap<V>