Content-Length: 55637 | pFad | https://doc.rust-lang.org/nightly/alloc/string/../../core/../std/string/../ops/trait.Index.html

Index in std::ops - RustSkip to main content

Index

Trait Index 

1.0.0 (const: unstable) · Source
pub trait Index<Idx>
where Idx: ?Sized,
{ type Output: ?Sized; // Required method fn index(&self, index: Idx) -> &Self::Output; }
Expand description

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) -> &Self::Output {
        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);

Required Associated Types§

1.0.0 (const: unstable) · Source

type Output: ?Sized

The returned type after indexing.

Required Methods§

1.0.0 (const: unstable) · Source

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

Performs the indexing (container[index]) operation.

§Panics

May panic if the index is out of bounds.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl Index<usize> for ByteString

1.96.0 · Source§

impl Index<RangeFrom<usize>> for CStr

Source§

impl Index<Range<usize>> for ByteString

Source§

impl Index<RangeFrom<usize>> for ByteString

1.47.0 · Source§

impl Index<RangeFrom<usize>> for CStr

Source§

impl Index<RangeFull> for ByteString

1.7.0 · Source§

impl Index<RangeFull> for CString

1.0.0 · Source§

impl Index<RangeFull> for OsString

Source§

impl Index<RangeInclusive<usize>> for ByteString

Source§

impl Index<RangeTo<usize>> for ByteString

Source§

impl Index<RangeToInclusive<usize>> for ByteString

1.0.0 (const: unstable) · Source§

impl<I> Index<I> for str
where I: SliceIndex<str>,

Source§

impl<I> Index<I> for ByteStr
where I: SliceIndex<ByteStr>,

1.0.0 · Source§

impl<I> Index<I> for String
where I: SliceIndex<str>,

Source§

impl<I, T, const N: usize> Index<I> for Simd<T, N>
where T: SimdElement, I: SliceIndex<[T]>,

1.0.0 · Source§

impl<K, Q, V, A> Index<&Q> for BTreeMap<K, V, A>
where A: Allocator + Clone, K: Borrow<Q> + Ord, Q: Ord + ?Sized,

1.0.0 · Source§

impl<K, Q, V, S, A> Index<&Q> for HashMap<K, V, S, A>
where K: Eq + Hash + Borrow<Q>, Q: Eq + Hash + ?Sized, S: BuildHasher, A: Allocator,

1.0.0 · Source§

impl<T, A> Index<usize> for VecDeque<T, A>
where A: Allocator,

1.0.0 (const: unstable) · Source§

impl<T, I> Index<I> for [T]
where I: SliceIndex<[T]>,

1.0.0 (const: unstable) · Source§

impl<T, I, A> Index<I> for Vec<T, A>
where I: SliceIndex<[T]>, A: Allocator,

1.50.0 (const: unstable) · Source§

impl<T, I, const N: usize> Index<I> for [T; N]
where [T]: Index<I>,

Source§

type Output = <[T] as Index<I>>::Output









ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: https://doc.rust-lang.org/nightly/alloc/string/../../core/../std/string/../ops/trait.Index.html

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy