1.0.0[−][src]Trait geng::prelude::Index
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);
Associated Types
Loading content...Required methods
Loading content...Implementations on Foreign Types
impl Index<RangeFrom<usize>> for CStr
[src]
impl Index<RangeFull> for OsString
[src]
impl Index<RangeFull> for CString
[src]
impl<I> Index<I> for str where
I: SliceIndex<str>,
[src]
I: SliceIndex<str>,
type Output = <I as SliceIndex<str>>::Output
pub fn index(&self, index: I) -> &<I as SliceIndex<str>>::Output
[src]
impl<T, I> Index<I> for [T] where
I: SliceIndex<[T]>,
[src]
I: SliceIndex<[T]>,
type Output = <I as SliceIndex<[T]>>::Output
pub fn index(&self, index: I) -> &<I as SliceIndex<[T]>>::Output
[src]
impl<T, I> Index<I> for Vec<T> where
I: SliceIndex<[T]>,
[src]
I: SliceIndex<[T]>,
type Output = <I as SliceIndex<[T]>>::Output
pub fn index(&self, index: I) -> &<Vec<T> as Index<I>>::Outputⓘ
[src]
impl Index<Range<usize>> for String
[src]
impl Index<RangeFull> for String
[src]
impl Index<RangeInclusive<usize>> for String
[src]
impl<'_, K, Q, V> Index<&'_ Q> for BTreeMap<K, V> where
K: Ord + Borrow<Q>,
Q: Ord + ?Sized,
[src]
K: Ord + Borrow<Q>,
Q: Ord + ?Sized,
type Output = V
pub fn index(&self, key: &Q) -> &Vⓘ
[src]
Returns a reference to the value corresponding to the supplied key.
Panics
Panics if the key is not present in the BTreeMap
.
impl Index<RangeToInclusive<usize>> for String
[src]
impl Index<RangeTo<usize>> for String
[src]
impl Index<RangeFrom<usize>> for String
[src]
impl<A> Index<usize> for VecDeque<A>
[src]
impl<T> Index<usize> for Slab<T>
[src]
impl<'a, V> Index<&'a usize> for VecMap<V>
impl<V> Index<usize> for VecMap<V>
impl<'input, Endian> Index<RangeFrom<usize>> for EndianSlice<'input, Endian> where
Endian: Endianity,
Endian: Endianity,
type Output = [u8]
pub fn index(
&self,
idx: RangeFrom<usize>
) -> &<EndianSlice<'input, Endian> as Index<RangeFrom<usize>>>::Output
&self,
idx: RangeFrom<usize>
) -> &<EndianSlice<'input, Endian> as Index<RangeFrom<usize>>>::Output
impl<'input, Endian> Index<usize> for EndianSlice<'input, Endian> where
Endian: Endianity,
Endian: Endianity,
type Output = u8
pub fn index(
&self,
idx: usize
) -> &<EndianSlice<'input, Endian> as Index<usize>>::Output
&self,
idx: usize
) -> &<EndianSlice<'input, Endian> as Index<usize>>::Output
impl<A, I> Index<I> for SmallVec<A> where
A: Array,
I: SliceIndex<[<A as Array>::Item]>,
A: Array,
I: SliceIndex<[<A as Array>::Item]>,
type Output = <I as SliceIndex<[<A as Array>::Item]>>::Output
pub fn index(
&self,
index: I
) -> &<I as SliceIndex<[<A as Array>::Item]>>::Output
&self,
index: I
) -> &<I as SliceIndex<[<A as Array>::Item]>>::Output
impl Index<usize> for Cursor
type Output = CursorImageBuffer
pub fn index(&self, index: usize) -> &<Cursor as Index<usize>>::Output
impl<'a, K, V, S, Q> Index<&'a Q> for LinkedHashMap<K, V, S> where
K: Hash + Eq + Borrow<Q>,
Q: Eq + Hash + ?Sized,
S: BuildHasher,
K: Hash + Eq + Borrow<Q>,
Q: Eq + Hash + ?Sized,
S: BuildHasher,
impl<T> Index<usize> for Bgra<T> where
T: Primitive,
[src]
T: Primitive,
impl<T> Index<usize> for Rgb<T> where
T: Primitive,
[src]
T: Primitive,
impl<T> Index<usize> for LumaA<T> where
T: Primitive,
[src]
T: Primitive,
impl<Buffer> Index<(u8, u32, u32)> for FlatSamples<Buffer> where
Buffer: Index<usize>,
[src]
Buffer: Index<usize>,
type Output = <Buffer as Index<usize>>::Output
pub fn index(
&self,
(u8, u32, u32)
) -> &<FlatSamples<Buffer> as Index<(u8, u32, u32)>>::Output
[src]
&self,
(u8, u32, u32)
) -> &<FlatSamples<Buffer> as Index<(u8, u32, u32)>>::Output
Return a reference to a single sample at specified coordinates.
Panics
When the coordinates are out of bounds or the index calculation fails.
impl<T> Index<usize> for Rgba<T> where
T: Primitive,
[src]
T: Primitive,
impl<T> Index<usize> for Bgr<T> where
T: Primitive,
[src]
T: Primitive,
impl<T> Index<usize> for Luma<T> where
T: Primitive,
[src]
T: Primitive,
impl<P, Container> Index<(u32, u32)> for ImageBuffer<P, Container> where
Container: Deref<Target = [<P as Pixel>::Subpixel]>,
P: Pixel + 'static,
<P as Pixel>::Subpixel: 'static,
[src]
Container: Deref<Target = [<P as Pixel>::Subpixel]>,
P: Pixel + 'static,
<P as Pixel>::Subpixel: 'static,
impl Index<RangeFull> for Url
[src]
impl Index<RangeFrom<Position>> for Url
[src]
impl Index<RangeTo<Position>> for Url
[src]
impl Index<Range<Position>> for Url
[src]
impl<A, I> Index<I> for ArrayVec<A> where
A: Array,
I: SliceIndex<[<A as Array>::Item]>,
A: Array,
I: SliceIndex<[<A as Array>::Item]>,
type Output = <I as SliceIndex<[<A as Array>::Item]>>::Output
#[must_use]pub fn index(&self, index: I) -> &<ArrayVec<A> as Index<I>>::Output
impl<A, I> Index<I> for TinyVec<A> where
A: Array,
I: SliceIndex<[<A as Array>::Item]>,
A: Array,
I: SliceIndex<[<A as Array>::Item]>,
type Output = <I as SliceIndex<[<A as Array>::Item]>>::Output
#[must_use]pub fn index(&self, index: I) -> &<TinyVec<A> as Index<I>>::Output
Implementors
impl<'_, K, Q, V, S> Index<&'_ Q> for HashMap<K, V, S> where
K: Eq + Hash + Borrow<Q>,
Q: Eq + Hash + ?Sized,
S: BuildHasher,
[src]
K: Eq + Hash + Borrow<Q>,
Q: Eq + Hash + ?Sized,
S: BuildHasher,
type Output = V
pub fn index(&self, key: &Q) -> &Vⓘ
[src]
Returns a reference to the value corresponding to the supplied key.
Panics
Panics if the key is not present in the HashMap
.
impl<'a, Q> Index<&'a Q> for Map<String, Value> where
Q: Ord + Eq + Hash + ?Sized,
String: Borrow<Q>,
[src]
Q: Ord + Eq + Hash + ?Sized,
String: Borrow<Q>,
Access an element of this map. Panics if the given key is not present in the map.
match *val { Value::String(ref s) => Some(s.as_str()), Value::Array(ref arr) => arr[0].as_str(), Value::Object(ref map) => map["type"].as_str(), _ => None, }
impl<I> Index<I> for Value where
I: Index,
[src]
I: Index,
type Output = Value
pub fn index(&self, index: I) -> &Value
[src]
Index into a serde_json::Value
using the syntax value[0]
or
value["k"]
.
Returns Value::Null
if the type of self
does not match the type of
the index, for example if the index is a string and self
is an array
or a number. Also returns Value::Null
if the given key does not exist
in the map or the given index is not within the bounds of the array.
For retrieving deeply nested values, you should have a look at the
Value::pointer
method.
Examples
let data = json!({ "x": { "y": ["z", "zz"] } }); assert_eq!(data["x"]["y"], json!(["z", "zz"])); assert_eq!(data["x"]["y"][0], json!("z")); assert_eq!(data["a"], json!(null)); // returns null for undefined values assert_eq!(data["a"]["b"], json!(null)); // does not panic