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 CString
[src]
impl Index<RangeFull> for OsString
[src]
impl<I> Index<I> for str where
I: SliceIndex<str>,
[src]
I: SliceIndex<str>,
type Output = <I as SliceIndex<str>>::Output
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
fn index(&self, index: I) -> &<I as SliceIndex<[T]>>::Output
[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
fn index(&self, key: &Q) -> &VⓘNotable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
[src]
Notable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
Returns a reference to the value corresponding to the supplied key.
Panics
Panics if the key is not present in the BTreeMap
.
impl<A> Index<usize> for VecDeque<A>
[src]
type Output = A
fn index(&self, index: usize) -> &AⓘNotable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
[src]
Notable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
impl Index<Range<usize>> for String
[src]
impl Index<RangeFrom<usize>> for String
[src]
impl Index<RangeInclusive<usize>> for String
[src]
impl<T, I> Index<I> for Vec<T> where
I: SliceIndex<[T]>,
[src]
I: SliceIndex<[T]>,
type Output = <I as SliceIndex<[T]>>::Output
fn index(&self, index: I) -> &<Vec<T> as Index<I>>::Outputⓘ
[src]
impl Index<RangeFull> for String
[src]
impl Index<RangeToInclusive<usize>> for String
[src]
impl Index<RangeTo<usize>> for String
[src]
impl<'_, K, Q, V, S> Index<&'_ Q> for HashMap<K, V, S> where
K: Eq + Hash + Borrow<Q>,
Q: Eq + Hash + ?Sized,
S: BuildHasher,
K: Eq + Hash + Borrow<Q>,
Q: Eq + Hash + ?Sized,
S: BuildHasher,
type Output = V
fn index(&self, key: &Q) -> &VⓘNotable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
Notable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
Returns a reference to the value corresponding to the supplied key.
Panics
Panics if the key is not present in the HashMap
.
impl<'input, Endian> Index<usize> for EndianSlice<'input, Endian> where
Endian: Endianity,
Endian: Endianity,
type Output = u8
fn index(
&self,
idx: usize
) -> &<EndianSlice<'input, Endian> as Index<usize>>::Output
&self,
idx: usize
) -> &<EndianSlice<'input, Endian> as Index<usize>>::Output
impl<'input, Endian> Index<RangeFrom<usize>> for EndianSlice<'input, Endian> where
Endian: Endianity,
Endian: Endianity,
type Output = [u8]
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
fn index(
&self,
idx: usize
) -> &<EndianSlice<'input, Endian> as Index<usize>>::Output
&self,
idx: usize
) -> &<EndianSlice<'input, Endian> as Index<usize>>::Output
impl<'input, Endian> Index<RangeFrom<usize>> for EndianSlice<'input, Endian> where
Endian: Endianity,
Endian: Endianity,
type Output = [u8]
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<T> Index<usize> for Slab<T>
[src]
type Output = T
fn index(&self, key: usize) -> &TⓘNotable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
[src]
Notable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
impl<'a, V> Index<&'a usize> for VecMap<V>
type Output = V
fn index(&self, i: &usize) -> &VⓘNotable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
Notable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
impl<V> Index<usize> for VecMap<V>
type Output = V
fn index(&self, i: usize) -> &VⓘNotable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
Notable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
impl<'_> Index<&'_ Value> for Map
[src]
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
fn index(&self, index: I) -> &<I as SliceIndex<[<A as Array>::Item]>>::Output
impl<Buffer> Index<(u8, u32, u32)> for FlatSamples<Buffer> where
Buffer: Index<usize>,
Buffer: Index<usize>,
type Output = <Buffer as Index<usize>>::Output
fn index(
&self,
(u8, u32, u32)
) -> &<FlatSamples<Buffer> as Index<(u8, u32, u32)>>::Output
&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,
T: Primitive,
type Output = T
fn index(&self, _index: usize) -> &TⓘNotable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
Notable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
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,
Container: Deref<Target = [<P as Pixel>::Subpixel]>,
P: Pixel + 'static,
<P as Pixel>::Subpixel: 'static,
type Output = P
fn index(&self, (u32, u32)) -> &PⓘNotable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
Notable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
impl<T> Index<usize> for Rgb<T> where
T: Primitive,
T: Primitive,
type Output = T
fn index(&self, _index: usize) -> &TⓘNotable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
Notable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
impl<T> Index<usize> for Bgr<T> where
T: Primitive,
T: Primitive,
type Output = T
fn index(&self, _index: usize) -> &TⓘNotable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
Notable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
impl<T> Index<usize> for LumaA<T> where
T: Primitive,
T: Primitive,
type Output = T
fn index(&self, _index: usize) -> &TⓘNotable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
Notable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
impl<T> Index<usize> for Bgra<T> where
T: Primitive,
T: Primitive,
type Output = T
fn index(&self, _index: usize) -> &TⓘNotable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
Notable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
impl<T> Index<usize> for Luma<T> where
T: Primitive,
T: Primitive,
type Output = T
fn index(&self, _index: usize) -> &TⓘNotable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
Notable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::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,
type Output = V
fn index(&self, index: &'a Q) -> &VⓘNotable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
Notable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
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]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]fn index(&self, index: I) -> &<TinyVec<A> as Index<I>>::Output
impl Index<RangeFull> for Url
[src]
impl Index<Range<Position>> for Url
[src]
impl Index<RangeFrom<Position>> for Url
[src]
impl Index<RangeTo<Position>> for Url
[src]
Loading content...
Implementors
impl<'_, K, Q, V, S> Index<&'_ Q> for geng::prelude::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
fn index(&self, key: &Q) -> &VⓘNotable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
[src]
Notable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
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 geng::prelude::serde_json::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
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
impl<T> Index<(usize, usize)> for Mat4<T>
type Output = T
fn index(&self, (usize, usize)) -> &TⓘNotable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;
Notable traits for &'_ mut W
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized, impl<'_, R> Read for &'_ mut R where
R: Read + ?Sized, impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;