1.0.0[−]Primitive Type reference
References, both shared and mutable.
A reference represents a borrow of some owned value. You can get one by using the &
or &mut
operators on a value, or by using a ref
or ref mut
pattern.
For those familiar with pointers, a reference is just a pointer that is assumed to be
aligned, not null, and pointing to memory containing a valid value of T
- for example,
&bool
can only point to an allocation containing the integer values 1
(true
) or 0
(false
), but creating a &bool
that points to an allocation containing
the value 3
causes undefined behaviour.
In fact, Option<&T>
has the same memory representation as a
nullable but aligned pointer, and can be passed across FFI boundaries as such.
In most cases, references can be used much like the original value. Field access, method calling, and indexing work the same (save for mutability rules, of course). In addition, the comparison operators transparently defer to the referent's implementation, allowing references to be compared the same as owned values.
References have a lifetime attached to them, which represents the scope for which the borrow is
valid. A lifetime is said to "outlive" another one if its representative scope is as long or
longer than the other. The 'static
lifetime is the longest lifetime, which represents the
total life of the program. For example, string literals have a 'static
lifetime because the
text data is embedded into the binary of the program, rather than in an allocation that needs
to be dynamically managed.
&mut T
references can be freely coerced into &T
references with the same referent type, and
references with longer lifetimes can be freely coerced into references with shorter ones.
Reference equality by address, instead of comparing the values pointed to, is accomplished via
implicit reference-pointer coercion and raw pointer equality via ptr::eq
, while
PartialEq
compares values.
use std::ptr; let five = 5; let other_five = 5; let five_ref = &five; let same_five_ref = &five; let other_five_ref = &other_five; assert!(five_ref == same_five_ref); assert!(five_ref == other_five_ref); assert!(ptr::eq(five_ref, same_five_ref)); assert!(!ptr::eq(five_ref, other_five_ref));Run
For more information on how to use references, see the book's section on "References and Borrowing".
Trait implementations
The following traits are implemented for all &T
, regardless of the type of its referent:
Copy
Clone
(Note that this will not defer toT
'sClone
implementation if it exists!)Deref
Borrow
Pointer
&mut T
references get all of the above except Copy
and Clone
(to prevent creating
multiple simultaneous mutable borrows), plus the following, regardless of the type of its
referent:
The following traits are implemented on &T
references if the underlying T
also implements
that trait:
- All the traits in
std::fmt
exceptPointer
andfmt::Write
PartialOrd
Ord
PartialEq
Eq
AsRef
Fn
(in addition,&T
references getFnMut
andFnOnce
ifT: Fn
)Hash
ToSocketAddrs
&mut T
references get all of the above except ToSocketAddrs
, plus the following, if T
implements that trait:
AsMut
FnMut
(in addition,&mut T
references getFnOnce
ifT: FnMut
)fmt::Write
Iterator
DoubleEndedIterator
ExactSizeIterator
FusedIterator
TrustedLen
Send
(note that&T
references only getSend
ifT: Sync
)io::Write
Read
Seek
BufRead
Note that due to method call deref coercion, simply calling a trait method will act like they
work on references as well as they do on owned values! The implementations described here are
meant for generic contexts, where the final type T
is a type parameter or otherwise not
locally known.
Trait Implementations
impl<'_, A> Allocator for &'_ A where
A: Allocator + ?Sized,
[src]
A: Allocator + ?Sized,
pub fn allocate(&self, layout: Layout) -> Result<NonNull<[u8]>, AllocError>
[src]
pub fn allocate_zeroed(
&self,
layout: Layout
) -> Result<NonNull<[u8]>, AllocError>
[src]
&self,
layout: Layout
) -> Result<NonNull<[u8]>, AllocError>
pub unsafe fn deallocate(&self, ptr: NonNull<u8>, layout: Layout)
[src]
pub unsafe fn grow(
&self,
ptr: NonNull<u8>,
old_layout: Layout,
new_layout: Layout
) -> Result<NonNull<[u8]>, AllocError>
[src]
&self,
ptr: NonNull<u8>,
old_layout: Layout,
new_layout: Layout
) -> Result<NonNull<[u8]>, AllocError>
pub unsafe fn grow_zeroed(
&self,
ptr: NonNull<u8>,
old_layout: Layout,
new_layout: Layout
) -> Result<NonNull<[u8]>, AllocError>
[src]
&self,
ptr: NonNull<u8>,
old_layout: Layout,
new_layout: Layout
) -> Result<NonNull<[u8]>, AllocError>
pub unsafe fn shrink(
&self,
ptr: NonNull<u8>,
old_layout: Layout,
new_layout: Layout
) -> Result<NonNull<[u8]>, AllocError>
[src]
&self,
ptr: NonNull<u8>,
old_layout: Layout,
new_layout: Layout
) -> Result<NonNull<[u8]>, AllocError>
pub fn by_ref(&self) -> &SelfⓘNotable traits for &'_ mut I
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<R: Read + ?Sized> Read for &mut Rimpl<W: Write + ?Sized> Write for &mut W
[src]
Notable traits for &'_ mut I
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<R: Read + ?Sized> Read for &mut Rimpl<W: Write + ?Sized> Write for &mut W
impl<'_, T, U> AsMut<U> for &'_ mut T where
T: AsMut<U> + ?Sized,
U: ?Sized,
[src]
T: AsMut<U> + ?Sized,
U: ?Sized,
pub fn as_mut(&mut self) -> &mut UⓘNotable traits for &'_ mut I
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<R: Read + ?Sized> Read for &mut Rimpl<W: Write + ?Sized> Write for &mut W
[src]
Notable traits for &'_ mut I
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<R: Read + ?Sized> Read for &mut Rimpl<W: Write + ?Sized> Write for &mut W
impl<'_, T, U> AsRef<U> for &'_ T where
T: AsRef<U> + ?Sized,
U: ?Sized,
[src]
T: AsRef<U> + ?Sized,
U: ?Sized,
pub fn as_ref(&self) -> &UⓘNotable traits for &'_ mut I
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<R: Read + ?Sized> Read for &mut Rimpl<W: Write + ?Sized> Write for &mut W
[src]
Notable traits for &'_ mut I
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<R: Read + ?Sized> Read for &mut Rimpl<W: Write + ?Sized> Write for &mut W
impl<'_, T, U> AsRef<U> for &'_ mut T where
T: AsRef<U> + ?Sized,
U: ?Sized,
[src]
T: AsRef<U> + ?Sized,
U: ?Sized,
pub fn as_ref(&self) -> &UⓘNotable traits for &'_ mut I
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<R: Read + ?Sized> Read for &mut Rimpl<W: Write + ?Sized> Write for &mut W
[src]
Notable traits for &'_ mut I
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<R: Read + ?Sized> Read for &mut Rimpl<W: Write + ?Sized> Write for &mut W
impl<'_, T> Binary for &'_ T where
T: Binary + ?Sized,
[src]
T: Binary + ?Sized,
impl<'_, T> Binary for &'_ mut T where
T: Binary + ?Sized,
[src]
T: Binary + ?Sized,
impl<'_, T> Borrow<T> for &'_ T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow(&self) -> &TⓘNotable traits for &'_ mut I
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<R: Read + ?Sized> Read for &mut Rimpl<W: Write + ?Sized> Write for &mut W
[src]
Notable traits for &'_ mut I
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<R: Read + ?Sized> Read for &mut Rimpl<W: Write + ?Sized> Write for &mut W
impl<'_, T> Borrow<T> for &'_ mut T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow(&self) -> &TⓘNotable traits for &'_ mut I
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<R: Read + ?Sized> Read for &mut Rimpl<W: Write + ?Sized> Write for &mut W
[src]
Notable traits for &'_ mut I
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<R: Read + ?Sized> Read for &mut Rimpl<W: Write + ?Sized> Write for &mut W
impl<'_, T> BorrowMut<T> for &'_ mut T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut TⓘNotable traits for &'_ mut I
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<R: Read + ?Sized> Read for &mut Rimpl<W: Write + ?Sized> Write for &mut W
[src]
Notable traits for &'_ mut I
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<R: Read + ?Sized> Read for &mut Rimpl<W: Write + ?Sized> Write for &mut W
impl<B: BufRead + ?Sized> BufRead for &mut B
[src]
fn fill_buf(&mut self) -> Result<&[u8]>
[src]
fn consume(&mut self, amt: usize)
[src]
fn read_until(&mut self, byte: u8, buf: &mut Vec<u8>) -> Result<usize>
[src]
fn read_line(&mut self, buf: &mut String) -> Result<usize>
[src]
fn split(self, byte: u8) -> Split<Self>ⓘ where
Self: Sized,
[src]
Self: Sized,
fn lines(self) -> Lines<Self>ⓘ where
Self: Sized,
[src]
Self: Sized,
impl<'_, T> !Clone for &'_ mut T where
T: ?Sized,
[src]
T: ?Sized,
Shared references can be cloned, but mutable references cannot!
#[must_use =
"cloning is often expensive and is not expected to have side effects"]pub fn clone(&self) -> Self
[src]
pub fn clone_from(&mut self, source: &Self)
[src]
impl<'_, T> Clone for &'_ T where
T: ?Sized,
[src]
T: ?Sized,
Shared references can be cloned, but mutable references cannot!
pub fn clone(&self) -> &'_ TⓘNotable traits for &'_ mut I
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<R: Read + ?Sized> Read for &mut Rimpl<W: Write + ?Sized> Write for &mut W
[src]
Notable traits for &'_ mut I
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<R: Read + ?Sized> Read for &mut Rimpl<W: Write + ?Sized> Write for &mut W
pub fn clone_from(&mut self, source: &Self)
[src]
impl<'a, 'b, T, U> CoerceUnsized<&'a U> for &'b T where
'b: 'a,
T: Unsize<U> + ?Sized,
U: ?Sized,
[src]
'b: 'a,
T: Unsize<U> + ?Sized,
U: ?Sized,
impl<'a, 'b, T, U> CoerceUnsized<&'a U> for &'b mut T where
'b: 'a,
T: Unsize<U> + ?Sized,
U: ?Sized,
[src]
'b: 'a,
T: Unsize<U> + ?Sized,
U: ?Sized,
impl<'a, T, U> CoerceUnsized<&'a mut U> for &'a mut T where
T: Unsize<U> + ?Sized,
U: ?Sized,
[src]
T: Unsize<U> + ?Sized,
U: ?Sized,
impl<'a, T, U> CoerceUnsized<*const U> for &'a T where
T: Unsize<U> + ?Sized,
U: ?Sized,
[src]
T: Unsize<U> + ?Sized,
U: ?Sized,
impl<'a, T, U> CoerceUnsized<*const U> for &'a mut T where
T: Unsize<U> + ?Sized,
U: ?Sized,
[src]
T: Unsize<U> + ?Sized,
U: ?Sized,
impl<'a, T, U> CoerceUnsized<*mut U> for &'a mut T where
T: Unsize<U> + ?Sized,
U: ?Sized,
[src]
T: Unsize<U> + ?Sized,
U: ?Sized,
impl<'_, T> Copy for &'_ T where
T: ?Sized,
[src]
T: ?Sized,
Shared references can be copied, but mutable references cannot!
impl<'_, T> Debug for &'_ T where
T: Debug + ?Sized,
[src]
T: Debug + ?Sized,
impl<'_, T> Debug for &'_ mut T where
T: Debug + ?Sized,
[src]
T: Debug + ?Sized,
impl<'_, T> Deref for &'_ T where
T: ?Sized,
[src]
T: ?Sized,
type Target = T
The resulting type after dereferencing.
pub fn deref(&self) -> &TⓘNotable traits for &'_ mut I
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<R: Read + ?Sized> Read for &mut Rimpl<W: Write + ?Sized> Write for &mut W
[src]
Notable traits for &'_ mut I
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<R: Read + ?Sized> Read for &mut Rimpl<W: Write + ?Sized> Write for &mut W
impl<'_, T> Deref for &'_ mut T where
T: ?Sized,
[src]
T: ?Sized,
type Target = T
The resulting type after dereferencing.
pub fn deref(&self) -> &TⓘNotable traits for &'_ mut I
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<R: Read + ?Sized> Read for &mut Rimpl<W: Write + ?Sized> Write for &mut W
[src]
Notable traits for &'_ mut I
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<R: Read + ?Sized> Read for &mut Rimpl<W: Write + ?Sized> Write for &mut W
impl<'_, T> !DerefMut for &'_ T where
T: ?Sized,
[src]
T: ?Sized,
impl<'_, T> DerefMut for &'_ mut T where
T: ?Sized,
[src]
T: ?Sized,
pub fn deref_mut(&mut self) -> &mut TⓘNotable traits for &'_ mut I
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<R: Read + ?Sized> Read for &mut Rimpl<W: Write + ?Sized> Write for &mut W
[src]
Notable traits for &'_ mut I
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<R: Read + ?Sized> Read for &mut Rimpl<W: Write + ?Sized> Write for &mut W
impl<'a, T, U> DispatchFromDyn<&'a U> for &'a T where
T: Unsize<U> + ?Sized,
U: ?Sized,
[src]
T: Unsize<U> + ?Sized,
U: ?Sized,
impl<'a, T, U> DispatchFromDyn<&'a mut U> for &'a mut T where
T: Unsize<U> + ?Sized,
U: ?Sized,
[src]
T: Unsize<U> + ?Sized,
U: ?Sized,
impl<'_, T> Display for &'_ T where
T: Display + ?Sized,
[src]
T: Display + ?Sized,
impl<'_, T> Display for &'_ mut T where
T: Display + ?Sized,
[src]
T: Display + ?Sized,
impl<'a, I> DoubleEndedIterator for &'a mut I where
I: DoubleEndedIterator + ?Sized,
[src]
I: DoubleEndedIterator + ?Sized,
pub fn next_back(&mut self) -> Option<<I as Iterator>::Item>
[src]
pub fn advance_back_by(&mut self, n: usize) -> Result<(), usize>
[src]
pub fn nth_back(&mut self, n: usize) -> Option<<I as Iterator>::Item>
[src]
pub fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R where
F: FnMut(B, Self::Item) -> R,
R: Try<Ok = B>,
1.27.0[src]
F: FnMut(B, Self::Item) -> R,
R: Try<Ok = B>,
pub fn rfold<B, F>(self, init: B, f: F) -> B where
F: FnMut(B, Self::Item) -> B,
1.27.0[src]
F: FnMut(B, Self::Item) -> B,
pub fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item> where
P: FnMut(&Self::Item) -> bool,
1.27.0[src]
P: FnMut(&Self::Item) -> bool,
impl<'_, A> Eq for &'_ A where
A: Eq + ?Sized,
[src]
A: Eq + ?Sized,
impl<'_, A> Eq for &'_ mut A where
A: Eq + ?Sized,
[src]
A: Eq + ?Sized,
impl<'_, I> ExactSizeIterator for &'_ mut I where
I: ExactSizeIterator + ?Sized,
[src]
I: ExactSizeIterator + ?Sized,
impl<'_, A, F> Fn<A> for &'_ F where
F: Fn<A> + ?Sized,
[src]
F: Fn<A> + ?Sized,
impl<'_, A, F> FnMut<A> for &'_ F where
F: Fn<A> + ?Sized,
[src]
F: Fn<A> + ?Sized,
impl<'_, A, F> FnMut<A> for &'_ mut F where
F: FnMut<A> + ?Sized,
[src]
F: FnMut<A> + ?Sized,
impl<'_, A, F> FnOnce<A> for &'_ F where
F: Fn<A> + ?Sized,
[src]
F: Fn<A> + ?Sized,
type Output = <F as FnOnce<A>>::Output
The returned type after the call operator is used.
pub extern "rust-call" fn call_once(self, args: A) -> <F as FnOnce<A>>::Output
[src]
impl<'_, A, F> FnOnce<A> for &'_ mut F where
F: FnMut<A> + ?Sized,
[src]
F: FnMut<A> + ?Sized,
type Output = <F as FnOnce<A>>::Output
The returned type after the call operator is used.
pub extern "rust-call" fn call_once(self, args: A) -> <F as FnOnce<A>>::Output
[src]
impl<'_, I> FusedIterator for &'_ mut I where
I: FusedIterator + ?Sized,
1.26.0[src]
I: FusedIterator + ?Sized,
impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized,
1.36.0[src]
F: Unpin + Future + ?Sized,
type Output = <F as Future>::Output
The type of value produced on completion.
pub fn poll(
self: Pin<&mut &'_ mut F>,
cx: &mut Context<'_>
) -> Poll<<&'_ mut F as Future>::Output>
[src]
self: Pin<&mut &'_ mut F>,
cx: &mut Context<'_>
) -> Poll<<&'_ mut F as Future>::Output>
impl<'_, G, R> Generator<R> for &'_ mut G where
G: Unpin + Generator<R> + ?Sized,
[src]
G: Unpin + Generator<R> + ?Sized,
type Yield = <G as Generator<R>>::Yield
The type of value this generator yields. Read more
type Return = <G as Generator<R>>::Return
The type of value this generator returns. Read more
pub fn resume(
self: Pin<&mut &'_ mut G>,
arg: R
) -> GeneratorState<<&'_ mut G as Generator<R>>::Yield, <&'_ mut G as Generator<R>>::Return>
[src]
self: Pin<&mut &'_ mut G>,
arg: R
) -> GeneratorState<<&'_ mut G as Generator<R>>::Yield, <&'_ mut G as Generator<R>>::Return>
impl<'_, T> Hash for &'_ mut T where
T: Hash + ?Sized,
[src]
T: Hash + ?Sized,
pub fn hash<H>(&self, state: &mut H) where
H: Hasher,
[src]
H: Hasher,
pub fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
H: Hasher,
impl<'_, T> Hash for &'_ T where
T: Hash + ?Sized,
[src]
T: Hash + ?Sized,
pub fn hash<H>(&self, state: &mut H) where
H: Hasher,
[src]
H: Hasher,
pub fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
H: Hasher,
impl<'_, H> Hasher for &'_ mut H where
H: Hasher + ?Sized,
1.22.0[src]
H: Hasher + ?Sized,
pub fn finish(&self) -> u64
[src]
pub fn write(&mut self, bytes: &[u8])
[src]
pub fn write_u8(&mut self, i: u8)
[src]
pub fn write_u16(&mut self, i: u16)
[src]
pub fn write_u32(&mut self, i: u32)
[src]
pub fn write_u64(&mut self, i: u64)
[src]
pub fn write_u128(&mut self, i: u128)
[src]
pub fn write_usize(&mut self, i: usize)
[src]
pub fn write_i8(&mut self, i: i8)
[src]
pub fn write_i16(&mut self, i: i16)
[src]
pub fn write_i32(&mut self, i: i32)
[src]
pub fn write_i64(&mut self, i: i64)
[src]
pub fn write_i128(&mut self, i: i128)
[src]
pub fn write_isize(&mut self, i: isize)
[src]
impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized,
[src]
I: Iterator + ?Sized,
type Item = <I as Iterator>::Item
The type of the elements being iterated over.
pub fn next(&mut self) -> Option<<I as Iterator>::Item>
[src]
pub fn size_hint(&self) -> (usize, Option<usize>)
[src]
pub fn advance_by(&mut self, n: usize) -> Result<(), usize>
[src]
pub fn nth(&mut self, n: usize) -> Option<<&'_ mut I as Iterator>::Item>
[src]
pub fn count(self) -> usize
[src]
pub fn last(self) -> Option<Self::Item>
[src]
pub fn step_by(self, step: usize) -> StepBy<Self>ⓘ
1.28.0[src]
pub fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>ⓘ where
U: IntoIterator<Item = Self::Item>,
[src]
U: IntoIterator<Item = Self::Item>,
pub fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>ⓘ where
U: IntoIterator,
[src]
U: IntoIterator,
pub fn map<B, F>(self, f: F) -> Map<Self, F>ⓘ where
F: FnMut(Self::Item) -> B,
[src]
F: FnMut(Self::Item) -> B,
pub fn for_each<F>(self, f: F) where
F: FnMut(Self::Item),
1.21.0[src]
F: FnMut(Self::Item),
pub fn filter<P>(self, predicate: P) -> Filter<Self, P>ⓘ where
P: FnMut(&Self::Item) -> bool,
[src]
P: FnMut(&Self::Item) -> bool,
pub fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>ⓘ where
F: FnMut(Self::Item) -> Option<B>,
[src]
F: FnMut(Self::Item) -> Option<B>,
pub fn enumerate(self) -> Enumerate<Self>ⓘ
[src]
pub fn peekable(self) -> Peekable<Self>ⓘ
[src]
pub fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>ⓘ where
P: FnMut(&Self::Item) -> bool,
[src]
P: FnMut(&Self::Item) -> bool,
pub fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>ⓘ where
P: FnMut(&Self::Item) -> bool,
[src]
P: FnMut(&Self::Item) -> bool,
pub fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>ⓘ where
P: FnMut(Self::Item) -> Option<B>,
[src]
P: FnMut(Self::Item) -> Option<B>,
pub fn skip(self, n: usize) -> Skip<Self>ⓘ
[src]
pub fn take(self, n: usize) -> Take<Self>ⓘ
[src]
pub fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>ⓘ where
F: FnMut(&mut St, Self::Item) -> Option<B>,
[src]
F: FnMut(&mut St, Self::Item) -> Option<B>,
pub fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>ⓘ where
F: FnMut(Self::Item) -> U,
U: IntoIterator,
[src]
F: FnMut(Self::Item) -> U,
U: IntoIterator,
pub fn flatten(self) -> Flatten<Self>ⓘ where
Self::Item: IntoIterator,
1.29.0[src]
Self::Item: IntoIterator,
pub fn fuse(self) -> Fuse<Self>ⓘ
[src]
pub fn inspect<F>(self, f: F) -> Inspect<Self, F>ⓘ where
F: FnMut(&Self::Item),
[src]
F: FnMut(&Self::Item),
pub fn by_ref(&mut self) -> &mut SelfⓘNotable traits for &'_ mut I
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<R: Read + ?Sized> Read for &mut Rimpl<W: Write + ?Sized> Write for &mut W
[src]
Notable traits for &'_ mut I
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<R: Read + ?Sized> Read for &mut Rimpl<W: Write + ?Sized> Write for &mut W
#[must_use =
"if you really need to exhaust the iterator, consider `.for_each(drop)` instead"]pub fn collect<B>(self) -> B where
B: FromIterator<Self::Item>,
[src]
B: FromIterator<Self::Item>,
pub fn partition<B, F>(self, f: F) -> (B, B) where
F: FnMut(&Self::Item) -> bool,
B: Default + Extend<Self::Item>,
[src]
F: FnMut(&Self::Item) -> bool,
B: Default + Extend<Self::Item>,
pub fn partition_in_place<'a, T, P>(self, predicate: P) -> usize where
Self: DoubleEndedIterator<Item = &'a mut T>,
T: 'a,
P: FnMut(&T) -> bool,
[src]
Self: DoubleEndedIterator<Item = &'a mut T>,
T: 'a,
P: FnMut(&T) -> bool,
pub fn is_partitioned<P>(self, predicate: P) -> bool where
P: FnMut(Self::Item) -> bool,
[src]
P: FnMut(Self::Item) -> bool,
pub fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R where
F: FnMut(B, Self::Item) -> R,
R: Try<Ok = B>,
1.27.0[src]
F: FnMut(B, Self::Item) -> R,
R: Try<Ok = B>,
pub fn try_for_each<F, R>(&mut self, f: F) -> R where
F: FnMut(Self::Item) -> R,
R: Try<Ok = ()>,
1.27.0[src]
F: FnMut(Self::Item) -> R,
R: Try<Ok = ()>,
pub fn fold<B, F>(self, init: B, f: F) -> B where
F: FnMut(B, Self::Item) -> B,
[src]
F: FnMut(B, Self::Item) -> B,
pub fn fold_first<F>(self, f: F) -> Option<Self::Item> where
F: FnMut(Self::Item, Self::Item) -> Self::Item,
[src]
F: FnMut(Self::Item, Self::Item) -> Self::Item,
pub fn all<F>(&mut self, f: F) -> bool where
F: FnMut(Self::Item) -> bool,
[src]
F: FnMut(Self::Item) -> bool,
pub fn any<F>(&mut self, f: F) -> bool where
F: FnMut(Self::Item) -> bool,
[src]
F: FnMut(Self::Item) -> bool,
pub fn find<P>(&mut self, predicate: P) -> Option<Self::Item> where
P: FnMut(&Self::Item) -> bool,
[src]
P: FnMut(&Self::Item) -> bool,
pub fn find_map<B, F>(&mut self, f: F) -> Option<B> where
F: FnMut(Self::Item) -> Option<B>,
1.30.0[src]
F: FnMut(Self::Item) -> Option<B>,
pub fn try_find<F, R>(
&mut self,
f: F
) -> Result<Option<Self::Item>, <R as Try>::Error> where
F: FnMut(&Self::Item) -> R,
R: Try<Ok = bool>,
[src]
&mut self,
f: F
) -> Result<Option<Self::Item>, <R as Try>::Error> where
F: FnMut(&Self::Item) -> R,
R: Try<Ok = bool>,
pub fn position<P>(&mut self, predicate: P) -> Option<usize> where
P: FnMut(Self::Item) -> bool,
[src]
P: FnMut(Self::Item) -> bool,
pub fn rposition<P>(&mut self, predicate: P) -> Option<usize> where
Self: ExactSizeIterator + DoubleEndedIterator,
P: FnMut(Self::Item) -> bool,
[src]
Self: ExactSizeIterator + DoubleEndedIterator,
P: FnMut(Self::Item) -> bool,
pub fn max(self) -> Option<Self::Item> where
Self::Item: Ord,
[src]
Self::Item: Ord,
pub fn min(self) -> Option<Self::Item> where
Self::Item: Ord,
[src]
Self::Item: Ord,
pub fn max_by_key<B, F>(self, f: F) -> Option<Self::Item> where
F: FnMut(&Self::Item) -> B,
B: Ord,
1.6.0[src]
F: FnMut(&Self::Item) -> B,
B: Ord,
pub fn max_by<F>(self, compare: F) -> Option<Self::Item> where
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
1.15.0[src]
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
pub fn min_by_key<B, F>(self, f: F) -> Option<Self::Item> where
F: FnMut(&Self::Item) -> B,
B: Ord,
1.6.0[src]
F: FnMut(&Self::Item) -> B,
B: Ord,
pub fn min_by<F>(self, compare: F) -> Option<Self::Item> where
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
1.15.0[src]
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
pub fn rev(self) -> Rev<Self>ⓘ where
Self: DoubleEndedIterator,
[src]
Self: DoubleEndedIterator,
pub fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB) where
Self: Iterator<Item = (A, B)>,
FromA: Default + Extend<A>,
FromB: Default + Extend<B>,
[src]
Self: Iterator<Item = (A, B)>,
FromA: Default + Extend<A>,
FromB: Default + Extend<B>,
pub fn copied<'a, T>(self) -> Copied<Self>ⓘ where
Self: Iterator<Item = &'a T>,
T: 'a + Copy,
1.36.0[src]
Self: Iterator<Item = &'a T>,
T: 'a + Copy,
pub fn cloned<'a, T>(self) -> Cloned<Self>ⓘ where
Self: Iterator<Item = &'a T>,
T: 'a + Clone,
[src]
Self: Iterator<Item = &'a T>,
T: 'a + Clone,
pub fn cycle(self) -> Cycle<Self>ⓘ where
Self: Clone,
[src]
Self: Clone,
pub fn sum<S>(self) -> S where
S: Sum<Self::Item>,
1.11.0[src]
S: Sum<Self::Item>,
pub fn product<P>(self) -> P where
P: Product<Self::Item>,
1.11.0[src]
P: Product<Self::Item>,
pub fn cmp<I>(self, other: I) -> Ordering where
I: IntoIterator<Item = Self::Item>,
Self::Item: Ord,
1.5.0[src]
I: IntoIterator<Item = Self::Item>,
Self::Item: Ord,
pub fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering where
F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,
I: IntoIterator,
[src]
F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,
I: IntoIterator,
pub fn partial_cmp<I>(self, other: I) -> Option<Ordering> where
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
1.5.0[src]
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
pub fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering> where
F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,
I: IntoIterator,
[src]
F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,
I: IntoIterator,
pub fn eq<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialEq<<I as IntoIterator>::Item>,
1.5.0[src]
I: IntoIterator,
Self::Item: PartialEq<<I as IntoIterator>::Item>,
pub fn eq_by<I, F>(self, other: I, eq: F) -> bool where
F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,
I: IntoIterator,
[src]
F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,
I: IntoIterator,
pub fn ne<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialEq<<I as IntoIterator>::Item>,
1.5.0[src]
I: IntoIterator,
Self::Item: PartialEq<<I as IntoIterator>::Item>,
pub fn lt<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
1.5.0[src]
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
pub fn le<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
1.5.0[src]
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
pub fn gt<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
1.5.0[src]
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
pub fn ge<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
1.5.0[src]
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
pub fn is_sorted(self) -> bool where
Self::Item: PartialOrd<Self::Item>,
[src]
Self::Item: PartialOrd<Self::Item>,
pub fn is_sorted_by<F>(self, compare: F) -> bool where
F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,
[src]
F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,
pub fn is_sorted_by_key<F, K>(self, f: F) -> bool where
F: FnMut(Self::Item) -> K,
K: PartialOrd<K>,
[src]
F: FnMut(Self::Item) -> K,
K: PartialOrd<K>,
impl<'_, T> LowerExp for &'_ mut T where
T: LowerExp + ?Sized,
[src]
T: LowerExp + ?Sized,
impl<'_, T> LowerExp for &'_ T where
T: LowerExp + ?Sized,
[src]
T: LowerExp + ?Sized,
impl<'_, T> LowerHex for &'_ T where
T: LowerHex + ?Sized,
[src]
T: LowerHex + ?Sized,
impl<'_, T> LowerHex for &'_ mut T where
T: LowerHex + ?Sized,
[src]
T: LowerHex + ?Sized,
impl<'_, T> Octal for &'_ mut T where
T: Octal + ?Sized,
[src]
T: Octal + ?Sized,
impl<'_, T> Octal for &'_ T where
T: Octal + ?Sized,
[src]
T: Octal + ?Sized,
impl<'_, A> Ord for &'_ A where
A: Ord + ?Sized,
[src]
A: Ord + ?Sized,
pub fn cmp(&self, other: &&'_ A) -> Ordering
[src]
#[must_use]pub fn max(self, other: Self) -> Self
1.21.0[src]
#[must_use]pub fn min(self, other: Self) -> Self
1.21.0[src]
#[must_use]pub fn clamp(self, min: Self, max: Self) -> Self
1.50.0[src]
impl<'_, A> Ord for &'_ mut A where
A: Ord + ?Sized,
[src]
A: Ord + ?Sized,
pub fn cmp(&self, other: &&'_ mut A) -> Ordering
[src]
#[must_use]pub fn max(self, other: Self) -> Self
1.21.0[src]
#[must_use]pub fn min(self, other: Self) -> Self
1.21.0[src]
#[must_use]pub fn clamp(self, min: Self, max: Self) -> Self
1.50.0[src]
impl<'_, '_, A, B> PartialEq<&'_ B> for &'_ A where
B: ?Sized,
A: PartialEq<B> + ?Sized,
[src]
B: ?Sized,
A: PartialEq<B> + ?Sized,
impl<'_, '_, A, B> PartialEq<&'_ B> for &'_ mut A where
B: ?Sized,
A: PartialEq<B> + ?Sized,
[src]
B: ?Sized,
A: PartialEq<B> + ?Sized,
impl<'_, '_, A, B> PartialEq<&'_ mut B> for &'_ mut A where
B: ?Sized,
A: PartialEq<B> + ?Sized,
[src]
B: ?Sized,
A: PartialEq<B> + ?Sized,
impl<'_, '_, A, B> PartialEq<&'_ mut B> for &'_ A where
B: ?Sized,
A: PartialEq<B> + ?Sized,
[src]
B: ?Sized,
A: PartialEq<B> + ?Sized,
impl<'_, '_, A, B> PartialOrd<&'_ B> for &'_ A where
B: ?Sized,
A: PartialOrd<B> + ?Sized,
[src]
B: ?Sized,
A: PartialOrd<B> + ?Sized,
pub fn partial_cmp(&self, other: &&B) -> Option<Ordering>
[src]
pub fn lt(&self, other: &&B) -> bool
[src]
pub fn le(&self, other: &&B) -> bool
[src]
pub fn gt(&self, other: &&B) -> bool
[src]
pub fn ge(&self, other: &&B) -> bool
[src]
impl<'_, '_, A, B> PartialOrd<&'_ mut B> for &'_ mut A where
B: ?Sized,
A: PartialOrd<B> + ?Sized,
[src]
B: ?Sized,
A: PartialOrd<B> + ?Sized,
pub fn partial_cmp(&self, other: &&mut B) -> Option<Ordering>
[src]
pub fn lt(&self, other: &&mut B) -> bool
[src]
pub fn le(&self, other: &&mut B) -> bool
[src]
pub fn gt(&self, other: &&mut B) -> bool
[src]
pub fn ge(&self, other: &&mut B) -> bool
[src]
impl<'_, T> Pointer for &'_ mut T where
T: ?Sized,
[src]
T: ?Sized,
impl<'_, T> Pointer for &'_ T where
T: ?Sized,
[src]
T: ?Sized,
impl<R: Read + ?Sized> Read for &mut R
[src]
fn read(&mut self, buf: &mut [u8]) -> Result<usize>
[src]
fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize>
[src]
fn is_read_vectored(&self) -> bool
[src]
unsafe fn initializer(&self) -> Initializer
[src]
fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize>
[src]
fn read_to_string(&mut self, buf: &mut String) -> Result<usize>
[src]
fn read_exact(&mut self, buf: &mut [u8]) -> Result<()>
[src]
fn by_ref(&mut self) -> &mut SelfⓘNotable traits for &'_ mut I
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<R: Read + ?Sized> Read for &mut Rimpl<W: Write + ?Sized> Write for &mut W
where
Self: Sized,
[src]
Notable traits for &'_ mut I
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<R: Read + ?Sized> Read for &mut Rimpl<W: Write + ?Sized> Write for &mut W
Self: Sized,
fn bytes(self) -> Bytes<Self>ⓘ where
Self: Sized,
[src]
Self: Sized,
fn chain<R: Read>(self, next: R) -> Chain<Self, R>ⓘ where
Self: Sized,
[src]
Self: Sized,
fn take(self, limit: u64) -> Take<Self>ⓘ where
Self: Sized,
[src]
Self: Sized,
impl<S: Seek + ?Sized> Seek for &mut S
[src]
fn seek(&mut self, pos: SeekFrom) -> Result<u64>
[src]
fn stream_len(&mut self) -> Result<u64>
[src]
fn stream_position(&mut self) -> Result<u64>
[src]
impl<'_, T> Send for &'_ T where
T: Sync + ?Sized,
[src]
T: Sync + ?Sized,
impl<'_, T> Send for &'_ mut T where
T: Send + ?Sized,
[src]
T: Send + ?Sized,
impl<T: ToSocketAddrs + ?Sized> ToSocketAddrs for &T
[src]
type Iter = T::Iter
Returned iterator over socket addresses which this type may correspond to. Read more
fn to_socket_addrs(&self) -> Result<T::Iter>
[src]
impl<'_, I> TrustedLen for &'_ mut I where
I: TrustedLen + ?Sized,
[src]
I: TrustedLen + ?Sized,
impl<'a, T> Unpin for &'a T where
T: 'a + ?Sized,
1.33.0[src]
T: 'a + ?Sized,
impl<'a, T> Unpin for &'a mut T where
T: 'a + ?Sized,
1.33.0[src]
T: 'a + ?Sized,
impl<T: ?Sized> !UnwindSafe for &mut T
1.9.0[src]
impl<T: RefUnwindSafe + ?Sized> UnwindSafe for &T
1.9.0[src]
impl<'_, T> UpperExp for &'_ T where
T: UpperExp + ?Sized,
[src]
T: UpperExp + ?Sized,
impl<'_, T> UpperExp for &'_ mut T where
T: UpperExp + ?Sized,
[src]
T: UpperExp + ?Sized,
impl<'_, T> UpperHex for &'_ T where
T: UpperHex + ?Sized,
[src]
T: UpperHex + ?Sized,
impl<'_, T> UpperHex for &'_ mut T where
T: UpperHex + ?Sized,
[src]
T: UpperHex + ?Sized,
impl<'_, W> Write for &'_ mut W where
W: Write + ?Sized,
1.4.0[src]
W: Write + ?Sized,
pub fn write_str(&mut self, s: &str) -> Result<(), Error>
[src]
pub fn write_char(&mut self, c: char) -> Result<(), Error>
[src]
pub fn write_fmt(&mut self, args: Arguments<'_>) -> Result<(), Error>
[src]
impl<W: Write + ?Sized> Write for &mut W
[src]
fn write(&mut self, buf: &[u8]) -> Result<usize>
[src]
fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> Result<usize>
[src]
fn is_write_vectored(&self) -> bool
[src]
fn flush(&mut self) -> Result<()>
[src]
fn write_all(&mut self, buf: &[u8]) -> Result<()>
[src]
fn write_fmt(&mut self, fmt: Arguments<'_>) -> Result<()>
[src]
fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<()>
[src]
fn by_ref(&mut self) -> &mut SelfⓘNotable traits for &'_ mut I
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<R: Read + ?Sized> Read for &mut Rimpl<W: Write + ?Sized> Write for &mut W
where
Self: Sized,
[src]
Notable traits for &'_ mut I
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<R: Read + ?Sized> Read for &mut Rimpl<W: Write + ?Sized> Write for &mut W
Self: Sized,