Trait std::ops::Index
[−]
[src]
pub trait Index<Idx> where Idx: ?Sized {
type Output: ?Sized;
fn index(&'a self, index: Idx) -> &'a Self::Output;
}The Index`Indextrait is used to specify the functionality of indexing operations like` trait is used to specify the functionality of indexing operations
like arr[idx]`arr[idx]` when used in an immutable context.
Examples
A trivial implementation of Index`Index. When`. When Foo[Bar]`Foo[Bar]happens, it ends up calling` happens, it ends up
calling index`index, and therefore,`, and therefore, main`mainprints` prints Indexing!`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]; }
Associated Types
type Output: ?Sized
The returned type after indexing
Required Methods
fn index(&'a self, index: Idx) -> &'a Self::Output
The method for the indexing (Foo[Bar]`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<RangeFull> for [T]impl Index<Range<usize>> for strimpl Index<RangeTo<usize>> for strimpl Index<RangeFrom<usize>> for strimpl Index<RangeFull> for strimpl Index<usize> for BitVecimpl<'a, K, Q, V> Index<&'a Q> for BTreeMap<K, V> where Q: Ord + ?Sized, K: Ord + Borrow<Q>impl Index<Range<usize>> for Stringimpl Index<RangeTo<usize>> for Stringimpl Index<RangeFrom<usize>> for Stringimpl Index<RangeFull> 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<RangeFull> for Vec<T>impl<A> Index<usize> for VecDeque<A>impl<V> Index<usize> for VecMap<V>impl<'a, V> Index<&'a usize> for VecMap<V>impl<'a, K, Q: ?Sized, V, S> Index<&'a Q> for HashMap<K, V, S> where K: Eq + Hash + Borrow<Q>, Q: Eq + Hash, S: HashStateimpl Index<RangeFull> for OsString