Trait nom::lib::std::ops::Index 1.0.0[−][src]
#[lang = "index"]pub trait Index<Idx> where
Idx: ?Sized, { type Output: ?Sized; fn index(&self, index: Idx) -> &Self::Output; }
Used for indexing operations (container[index]
) in immutable contexts.
container[index]
is actually syntactic sugar for *container.index(index)
,
but only when used as an immutable value. If a mutable value is requested,
IndexMut
is used instead. This allows nice things such as
let value = v[index]
if the type of value
implements Copy
.
Examples
The following example implements Index
on a read-only NucleotideCount
container, enabling individual counts to be retrieved with index syntax.
use std::ops::Index; enum Nucleotide { A, C, G, T, } struct NucleotideCount { a: usize, c: usize, g: usize, t: usize, } impl Index<Nucleotide> for NucleotideCount { type Output = usize; fn index(&self, nucleotide: Nucleotide) -> &usize { match nucleotide { Nucleotide::A => &self.a, Nucleotide::C => &self.c, Nucleotide::G => &self.g, Nucleotide::T => &self.t, } } } let nucleotide_count = NucleotideCount {a: 14, c: 9, g: 10, t: 12}; assert_eq!(nucleotide_count[Nucleotide::A], 14); assert_eq!(nucleotide_count[Nucleotide::C], 9); assert_eq!(nucleotide_count[Nucleotide::G], 10); assert_eq!(nucleotide_count[Nucleotide::T], 12);
Associated Types
Required Methods
Implementations on Foreign Types
impl Index<RangeFull> for CString
[src]
impl Index<RangeFull> for CString
impl Index<RangeFull> for OsString
[src]
impl Index<RangeFull> for OsString
impl Index<RangeTo<usize>> for str
[src]
impl Index<RangeTo<usize>> for str
Implements substring slicing with syntax &self[.. end]
.
Returns a slice of the string from the beginning to byte offset
end
.
Equivalent to &self[0 .. end]
.
impl<T, I> Index<I> for [T] where
I: SliceIndex<[T]>,
[src]
impl<T, I> Index<I> for [T] where
I: SliceIndex<[T]>,
impl Index<RangeInclusive<usize>> for str
[src]
impl Index<RangeInclusive<usize>> for str
impl Index<RangeFull> for str
[src]
impl Index<RangeFull> for str
Implements substring slicing with syntax &self[..]
.
Returns a slice of the whole string. This operation can never panic.
Equivalent to &self[0 .. len]
.
impl Index<RangeFrom<usize>> for str
[src]
impl Index<RangeFrom<usize>> for str
Implements substring slicing with syntax &self[begin ..]
.
Returns a slice of the string from byte offset begin
to the end of the string.
Equivalent to &self[begin .. len]
.
impl Index<Range<usize>> for str
[src]
impl Index<Range<usize>> for str
Implements substring slicing with syntax &self[begin .. end]
.
Returns a slice of the given string from the byte range
[begin
..end
).
This operation is O(1)
.
Panics
Panics if begin
or end
does not point to the starting
byte offset of a character (as defined by is_char_boundary
).
Requires that begin <= end
and end <= len
where len
is the
length of the string.
Examples
let s = "Löwe 老虎 Léopard"; assert_eq!(&s[0 .. 1], "L"); assert_eq!(&s[1 .. 9], "öwe 老"); // these will panic: // byte 2 lies within `ö`: // &s[2 ..3]; // byte 8 lies within `老` // &s[1 .. 8]; // byte 100 is outside the string // &s[3 .. 100];
impl Index<RangeToInclusive<usize>> for str
[src]
impl Index<RangeToInclusive<usize>> for str
impl<'t, 'i> Index<&'i str> for Captures<'t>
[src]
impl<'t, 'i> Index<&'i str> for Captures<'t>
Get a group by name.
't
is the lifetime of the matched text and 'i
is the lifetime
of the group name (the index).
The text can't outlive the Captures
object if this method is
used, because of how Index
is defined (normally a[i]
is part
of a
and can't outlive it); to do that, use name
instead.
Panics
If there is no group named by the given value.
impl<'t> Index<usize> for Captures<'t>
[src]
impl<'t> Index<usize> for Captures<'t>
Get a group by index.
't
is the lifetime of the matched text.
The text can't outlive the Captures
object if this method is
used, because of how Index
is defined (normally a[i]
is part
of a
and can't outlive it); to do that, use get()
instead.
Panics
If there is no group at the given index.
impl<'t> Index<usize> for Captures<'t>
[src]
impl<'t> Index<usize> for Captures<'t>
Get a group by index.
't
is the lifetime of the matched text.
The text can't outlive the Captures
object if this method is
used, because of how Index
is defined (normally a[i]
is part
of a
and can't outlive it); to do that, use get()
instead.
Panics
If there is no group at the given index.
impl<'t, 'i> Index<&'i str> for Captures<'t>
[src]
impl<'t, 'i> Index<&'i str> for Captures<'t>
Get a group by name.
't
is the lifetime of the matched text and 'i
is the lifetime
of the group name (the index).
The text can't outlive the Captures
object if this method is
used, because of how Index
is defined (normally a[i]
is part
of a
and can't outlive it); to do that, use name
instead.
Panics
If there is no group named by the given value.
Implementors
impl<'a, K, Q, V, S> Index<&'a Q> for HashMap<K, V, S> where
K: Eq + Hash + Borrow<Q>,
Q: Eq + Hash + ?Sized,
S: BuildHasher, type Output = V;impl<'a, K, Q, V> Index<&'a Q> for BTreeMap<K, V> where
K: Ord + Borrow<Q>,
Q: Ord + ?Sized, type Output = V;impl Index<RangeInclusive<usize>> for String type Output = str;
impl Index<RangeTo<usize>> for String type Output = str;
impl Index<RangeFull> for String type Output = str;
impl Index<RangeFrom<usize>> for String type Output = str;
impl<T, I> Index<I> for Vec<T> where
I: SliceIndex<[T]>, type Output = <I as SliceIndex<[T]>>::Output;impl Index<Range<usize>> for String type Output = str;
impl<A> Index<usize> for VecDeque<A> type Output = A;
impl Index<RangeToInclusive<usize>> for String type Output = str;