Trait druid::piet::cairo::glib::bitflags::_core::ops::Index

1.0.0 · 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§

source

type Output: ?Sized

The returned type after indexing.

Required Methods§

source

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

Performs the indexing (container[index]) operation.

Panics

May panic if the index is out of bounds.

Implementors§

source§

impl Index<Range<usize>> for String

§

type Output = str

1.47.0 · source§

impl Index<RangeFrom<usize>> for CStr

§

type Output = CStr

source§

impl Index<RangeFrom<usize>> for String

§

type Output = str

1.7.0 · source§

impl Index<RangeFull> for CString

§

type Output = CStr

source§

impl Index<RangeFull> for String

§

type Output = str

source§

impl Index<RangeFull> for OsString

1.26.0 · source§

impl Index<RangeInclusive<usize>> for String

§

type Output = str

source§

impl Index<RangeTo<usize>> for String

§

type Output = str

1.26.0 · source§

impl Index<RangeToInclusive<usize>> for String

§

type Output = str

source§

impl<'a, BK, K, V> Index<&'a BK> for OrdMap<K, V>where BK: Ord + ?Sized, K: Ord + Borrow<BK>,

§

type Output = V

source§

impl<'a, BK, K, V, S> Index<&'a BK> for druid::im::HashMap<K, V, S>where BK: Hash + Eq + ?Sized, K: Hash + Eq + Borrow<BK>, S: BuildHasher,

§

type Output = V

§

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.

§

type Output = str

§

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.

§

type Output = [u8]

§

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.

§

type Output = str

§

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.

§

type Output = [u8]

source§

impl<A> Index<usize> for Vector<A>where A: Clone,

§

type Output = A

§

impl<A, I> Index<I> for SmallVec<A>where A: Array, I: SliceIndex<[<A as Array>::Item]>,

§

type Output = <I as SliceIndex<[<A as Array>::Item]>>::Output

§

impl<A, N> Index<usize> for SparseChunk<A, N>where N: Bits + ChunkLength<A>,

§

type Output = A

§

impl<A, N, I> Index<I> for Chunk<A, N>where I: SliceIndex<[A]>, N: ChunkLength<A>,

§

type Output = <I as SliceIndex<[A]>>::Output

§

impl<Buffer> Index<(u8, u32, u32)> for FlatSamples<Buffer>where Buffer: Index<usize>,

§

type Output = <Buffer as Index<usize>>::Output

const: unstable · source§

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

§

type Output = <I as SliceIndex<str>>::Output

source§

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

§

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

source§

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

§

type Output = V

source§

impl<K, Q, V, S> Index<&Q> for std::collections::hash::map::HashMap<K, V, S>where K: Eq + Hash + Borrow<Q>, Q: Eq + Hash + ?Sized, S: BuildHasher,

§

type Output = V

§

impl<P, Container> Index<(u32, u32)> for ImageBuffer<P, Container>where P: Pixel, Container: Deref<Target = [<P as Pixel>::Subpixel]>,

§

type Output = P

§

impl<T> Index<usize> for Luma<T>

§

type Output = T

§

impl<T> Index<usize> for LumaA<T>

§

type Output = T

§

impl<T> Index<usize> for Rgb<T>

§

type Output = T

§

impl<T> Index<usize> for Rgba<T>

§

type Output = T

§

impl<T> Index<usize> for Slab<T>

§

type Output = T

§

impl<T> Index<TableIndex> for [T]

§

type Output = T

source§

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

§

type Output = T

const: unstable · source§

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

§

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

source§

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

§

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

1.50.0 (const: unstable) · source§

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

§

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