#[repr(C, align(8))]pub struct BitRef<'a, M, O = Lsb0, T = usize> where
M: Mutability,
O: BitOrder,
T: BitStore, { /* private fields */ }
Expand description
A proxy reference, equivalent to C++ std::bitset<N>::reference
.
This type wraps a BitPtr
and caches a bool
in a padding byte. It is then
able to freely produce references to the cached bool, and commits the cache back
to the referent bit location on drop
.
Lifetimes
'a
: The lifetime of the source&'a mut BitSlice
that created theBitRef
.
Type Parameters
M
: The write permission of the reference. When this isConst
, theDerefMut
implementation is removed, forbidding the proxy from writing back to memory.O
: The ordering used to address a bit in memory.T
: The storage type containing the referent bit.
Quirks
Because this type has both a lifetime and a destructor, it can introduce an
uncommon error condition in Rust. When an expression that produces this type is
in the final expression of a block, including if that expression is used as a
condition in a match
, if let
, or if
, then the compiler will attempt to
extend the drop scope of this type to the outside of the block. This causes a
lifetime mismatch error if the source region from which this proxy is produced
goes out of scope at the end of the block.
If you get a compiler error that this type causes something to be dropped while borrowed, you can end the borrow by putting any expression-ending syntax element after the offending expression that produces this type, including a semicolon or an item definition.
Examples
use bitvec::prelude::*;
let bits = bits![mut 0; 2];
let (left, right) = bits.split_at_mut(1);
let mut first = left.get_mut(0).unwrap();
let second = right.get_mut(0).unwrap();
// Referential behavior
*first = true;
// Direct write
second.set(true);
drop(first); // it’s not a reference!
assert_eq!(bits, bits![1; 2]);
Implementations
sourceimpl<M, O, T> BitRef<'_, M, O, T> where
M: Mutability,
O: BitOrder,
T: BitStore,
impl<M, O, T> BitRef<'_, M, O, T> where
M: Mutability,
O: BitOrder,
T: BitStore,
sourcepub unsafe fn from_bitptr(bitptr: BitPtr<M, O, T>) -> Self
pub unsafe fn from_bitptr(bitptr: BitPtr<M, O, T>) -> Self
Converts a bit-pointer into a proxy bit-reference.
The conversion reads from the pointer, then stores the bool
in a
padding byte.
Parameters
bitptr
: A bit-pointer to turn into a bit-reference.
Returns
A bit-reference pointing at bitptr
.
Safety
The bitptr
must address a location that is valid for reads and, if M
is Mut
, writes.
sourcepub fn into_bitptr(self) -> BitPtr<M, O, T>
pub fn into_bitptr(self) -> BitPtr<M, O, T>
Decays the bit-reference to an ordinary bit-pointer.
Parameters
self
Returns
The interior bit-pointer, without the associated cache. If this was a write-capable pointer, then the cached bit is committed to memory before this method returns.
sourceimpl<O, T> BitRef<'_, Mut, O, T> where
O: BitOrder,
T: BitStore,
impl<O, T> BitRef<'_, Mut, O, T> where
O: BitOrder,
T: BitStore,
sourcepub fn swap<O2, T2>(&mut self, other: &mut BitRef<'_, Mut, O2, T2>) where
O2: BitOrder,
T2: BitStore,
pub fn swap<O2, T2>(&mut self, other: &mut BitRef<'_, Mut, O2, T2>) where
O2: BitOrder,
T2: BitStore,
sourcepub fn set(self, value: bool)
pub fn set(self, value: bool)
Writes a bit into the proxied location without an intermediate copy.
This function writes value
directly into the proxied location, and
does not store value
in the proxy’s internal cache. This should be
equivalent to the behavior seen when using ordinary DerefMut
proxying, but the latter depends on compiler optimization.
Parameters
self
: This destroys the proxy, as it becomes invalid when writing directly to the location without updating the cache.value
: The new bit to write into the proxied slot.
Trait Implementations
sourceimpl<'a, M, O1, O2, T1, T2> Extend<BitRef<'a, M, O2, T2>> for BitVec<O1, T1> where
M: Mutability,
O1: BitOrder,
O2: BitOrder,
T1: BitStore,
T2: BitStore,
impl<'a, M, O1, O2, T1, T2> Extend<BitRef<'a, M, O2, T2>> for BitVec<O1, T1> where
M: Mutability,
O1: BitOrder,
O2: BitOrder,
T1: BitStore,
T2: BitStore,
sourcefn extend<I>(&mut self, iter: I) where
I: IntoIterator<Item = BitRef<'a, M, O2, T2>>,
fn extend<I>(&mut self, iter: I) where
I: IntoIterator<Item = BitRef<'a, M, O2, T2>>,
Extends a collection with the contents of an iterator. Read more
sourcefn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one
)Extends a collection with exactly one element.
sourcefn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one
)Reserves capacity in a collection for the given number of additional elements. Read more
sourceimpl<'a, M, O1, O2, T1, T2> FromIterator<BitRef<'a, M, O2, T2>> for BitVec<O1, T1> where
M: Mutability,
O1: BitOrder,
O2: BitOrder,
T1: BitStore,
T2: BitStore,
impl<'a, M, O1, O2, T1, T2> FromIterator<BitRef<'a, M, O2, T2>> for BitVec<O1, T1> where
M: Mutability,
O1: BitOrder,
O2: BitOrder,
T1: BitStore,
T2: BitStore,
sourcefn from_iter<I>(iter: I) -> Self where
I: IntoIterator<Item = BitRef<'a, M, O2, T2>>,
fn from_iter<I>(iter: I) -> Self where
I: IntoIterator<Item = BitRef<'a, M, O2, T2>>,
Creates a value from an iterator. Read more
sourceimpl<M, O, T> Ord for BitRef<'_, M, O, T> where
M: Mutability,
O: BitOrder,
T: BitStore,
impl<M, O, T> Ord for BitRef<'_, M, O, T> where
M: Mutability,
O: BitOrder,
T: BitStore,
Implement ordering by comparing the proxied bool
values.
sourceimpl<M, O, T> PartialEq<&'_ bool> for BitRef<'_, M, O, T> where
M: Mutability,
O: BitOrder,
T: BitStore,
impl<M, O, T> PartialEq<&'_ bool> for BitRef<'_, M, O, T> where
M: Mutability,
O: BitOrder,
T: BitStore,
sourceimpl<M1, M2, O1, O2, T1, T2> PartialEq<BitRef<'_, M2, O2, T2>> for BitRef<'_, M1, O1, T1> where
M1: Mutability,
M2: Mutability,
O1: BitOrder,
O2: BitOrder,
T1: BitStore,
T2: BitStore,
impl<M1, M2, O1, O2, T1, T2> PartialEq<BitRef<'_, M2, O2, T2>> for BitRef<'_, M1, O1, T1> where
M1: Mutability,
M2: Mutability,
O1: BitOrder,
O2: BitOrder,
T1: BitStore,
T2: BitStore,
Test equality of proxy references by the value of their proxied bit.
To test equality by address, decay to a BitPtr
with into_bitptr
.
sourceimpl<M, O, T> PartialEq<bool> for BitRef<'_, M, O, T> where
M: Mutability,
O: BitOrder,
T: BitStore,
impl<M, O, T> PartialEq<bool> for BitRef<'_, M, O, T> where
M: Mutability,
O: BitOrder,
T: BitStore,
sourceimpl<M, O, T> PartialOrd<&'_ bool> for BitRef<'_, M, O, T> where
M: Mutability,
O: BitOrder,
T: BitStore,
impl<M, O, T> PartialOrd<&'_ bool> for BitRef<'_, M, O, T> where
M: Mutability,
O: BitOrder,
T: BitStore,
sourcefn partial_cmp(&self, other: &&bool) -> Option<Ordering>
fn partial_cmp(&self, other: &&bool) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
1.0.0 · sourcefn lt(&self, other: &Rhs) -> bool
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
1.0.0 · sourcefn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
sourceimpl<M1, M2, O1, O2, T1, T2> PartialOrd<BitRef<'_, M2, O2, T2>> for BitRef<'_, M1, O1, T1> where
M1: Mutability,
M2: Mutability,
O1: BitOrder,
O2: BitOrder,
T1: BitStore,
T2: BitStore,
impl<M1, M2, O1, O2, T1, T2> PartialOrd<BitRef<'_, M2, O2, T2>> for BitRef<'_, M1, O1, T1> where
M1: Mutability,
M2: Mutability,
O1: BitOrder,
O2: BitOrder,
T1: BitStore,
T2: BitStore,
Order proxy references by the value of their proxied bit.
To order by address, decay to a BitPtr
with into_bitptr
.
sourcefn partial_cmp(&self, other: &BitRef<'_, M2, O2, T2>) -> Option<Ordering>
fn partial_cmp(&self, other: &BitRef<'_, M2, O2, T2>) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
1.0.0 · sourcefn lt(&self, other: &Rhs) -> bool
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
1.0.0 · sourcefn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
sourceimpl<M, O, T> PartialOrd<bool> for BitRef<'_, M, O, T> where
M: Mutability,
O: BitOrder,
T: BitStore,
impl<M, O, T> PartialOrd<bool> for BitRef<'_, M, O, T> where
M: Mutability,
O: BitOrder,
T: BitStore,
sourcefn partial_cmp(&self, other: &bool) -> Option<Ordering>
fn partial_cmp(&self, other: &bool) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
1.0.0 · sourcefn lt(&self, other: &Rhs) -> bool
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
1.0.0 · sourcefn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
impl<M, O, T> Eq for BitRef<'_, M, O, T> where
M: Mutability,
O: BitOrder,
T: BitStore,
Implement equality by comparing the proxied bool
values.
Auto Trait Implementations
impl<'a, M, O = Lsb0, T = usize> !RefUnwindSafe for BitRef<'a, M, O, T>
impl<'a, M, O = Lsb0, T = usize> !Send for BitRef<'a, M, O, T>
impl<'a, M, O = Lsb0, T = usize> !Sync for BitRef<'a, M, O, T>
impl<'a, M, O, T> Unpin for BitRef<'a, M, O, T> where
M: Unpin,
O: Unpin,
impl<'a, M, O = Lsb0, T = usize> !UnwindSafe for BitRef<'a, M, O, T>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> FmtForward for T
impl<T> FmtForward for T
sourcefn fmt_binary(self) -> FmtBinary<Self> where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self> where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.
sourcefn fmt_display(self) -> FmtDisplay<Self> where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self> where
Self: Display,
Causes self
to use its Display
implementation when
Debug
-formatted. Read more
sourcefn fmt_lower_exp(self) -> FmtLowerExp<Self> where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self> where
Self: LowerExp,
Causes self
to use its LowerExp
implementation when
Debug
-formatted. Read more
sourcefn fmt_lower_hex(self) -> FmtLowerHex<Self> where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self> where
Self: LowerHex,
Causes self
to use its LowerHex
implementation when
Debug
-formatted. Read more
sourcefn fmt_octal(self) -> FmtOctal<Self> where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self> where
Self: Octal,
Causes self
to use its Octal
implementation when Debug
-formatted.
sourcefn fmt_pointer(self) -> FmtPointer<Self> where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self> where
Self: Pointer,
Causes self
to use its Pointer
implementation when
Debug
-formatted. Read more
sourcefn fmt_upper_exp(self) -> FmtUpperExp<Self> where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self> where
Self: UpperExp,
Causes self
to use its UpperExp
implementation when
Debug
-formatted. Read more
sourcefn fmt_upper_hex(self) -> FmtUpperHex<Self> where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self> where
Self: UpperHex,
Causes self
to use its UpperHex
implementation when
Debug
-formatted. Read more
sourceimpl<T> Pipe for T where
T: ?Sized,
impl<T> Pipe for T where
T: ?Sized,
sourcefn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
Pipes by value. This is generally the method you want to use. Read more
sourcefn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R where
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R where
R: 'a,
Borrows self
and passes that borrow into the pipe function. Read more
sourcefn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R where
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R where
R: 'a,
Mutably borrows self
and passes that borrow into the pipe function. Read more
sourcefn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R where
Self: Borrow<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R where
Self: Borrow<B>,
B: 'a + ?Sized,
R: 'a,
Borrows self
, then passes self.borrow()
into the pipe function. Read more
sourcefn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> R where
Self: BorrowMut<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> R where
Self: BorrowMut<B>,
B: 'a + ?Sized,
R: 'a,
Mutably borrows self
, then passes self.borrow_mut()
into the pipe
function. Read more
sourcefn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R where
Self: AsRef<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R where
Self: AsRef<U>,
U: 'a + ?Sized,
R: 'a,
Borrows self
, then passes self.as_ref()
into the pipe function.
sourcefn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R where
Self: AsMut<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R where
Self: AsMut<U>,
U: 'a + ?Sized,
R: 'a,
Mutably borrows self
, then passes self.as_mut()
into the pipe
function. Read more
sourceimpl<T> PipeAsRef for T
impl<T> PipeAsRef for T
sourceimpl<T> PipeBorrow for T
impl<T> PipeBorrow for T
sourceimpl<T> PipeDeref for T
impl<T> PipeDeref for T
sourceimpl<T> PipeRef for T
impl<T> PipeRef for T
sourceimpl<T> Tap for T
impl<T> Tap for T
sourcefn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self where
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self where
Self: Borrow<B>,
B: ?Sized,
Immutable access to the Borrow<B>
of a value. Read more
sourcefn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self where
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self where
Self: BorrowMut<B>,
B: ?Sized,
Mutable access to the BorrowMut<B>
of a value. Read more
sourcefn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self where
Self: AsRef<R>,
R: ?Sized,
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self where
Self: AsRef<R>,
R: ?Sized,
Immutable access to the AsRef<R>
view of a value. Read more
sourcefn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self where
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self where
Self: AsMut<R>,
R: ?Sized,
Mutable access to the AsMut<R>
view of a value. Read more
sourcefn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self where
Self: Deref<Target = T>,
T: ?Sized,
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self where
Self: Deref<Target = T>,
T: ?Sized,
Immutable access to the Deref::Target
of a value. Read more
sourcefn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self where
Self: DerefMut<Target = T> + Deref,
T: ?Sized,
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self where
Self: DerefMut<Target = T> + Deref,
T: ?Sized,
Mutable access to the Deref::Target
of a value. Read more
sourcefn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
Calls .tap()
only in debug builds, and is erased in release builds.
sourcefn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
Calls .tap_mut()
only in debug builds, and is erased in release
builds. Read more
sourcefn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self where
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self where
Self: Borrow<B>,
B: ?Sized,
Calls .tap_borrow()
only in debug builds, and is erased in release
builds. Read more
sourcefn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self where
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self where
Self: BorrowMut<B>,
B: ?Sized,
Calls .tap_borrow_mut()
only in debug builds, and is erased in release
builds. Read more
sourcefn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self where
Self: AsRef<R>,
R: ?Sized,
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self where
Self: AsRef<R>,
R: ?Sized,
Calls .tap_ref()
only in debug builds, and is erased in release
builds. Read more
sourcefn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self where
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self where
Self: AsMut<R>,
R: ?Sized,
Calls .tap_ref_mut()
only in debug builds, and is erased in release
builds. Read more
sourceimpl<T> Tap for T
impl<T> Tap for T
sourcefn tap<F, R>(self, func: F) -> Self where
F: FnOnce(&Self) -> R,
fn tap<F, R>(self, func: F) -> Self where
F: FnOnce(&Self) -> R,
Provides immutable access for inspection. Read more
sourcefn tap_dbg<F, R>(self, func: F) -> Self where
F: FnOnce(&Self) -> R,
fn tap_dbg<F, R>(self, func: F) -> Self where
F: FnOnce(&Self) -> R,
Calls tap
in debug builds, and does nothing in release builds.
sourcefn tap_mut<F, R>(self, func: F) -> Self where
F: FnOnce(&mut Self) -> R,
fn tap_mut<F, R>(self, func: F) -> Self where
F: FnOnce(&mut Self) -> R,
Provides mutable access for modification. Read more
sourcefn tap_mut_dbg<F, R>(self, func: F) -> Self where
F: FnOnce(&mut Self) -> R,
fn tap_mut_dbg<F, R>(self, func: F) -> Self where
F: FnOnce(&mut Self) -> R,
Calls tap_mut
in debug builds, and does nothing in release builds.
sourceimpl<T, U> TapAsRef<U> for T where
U: ?Sized,
impl<T, U> TapAsRef<U> for T where
U: ?Sized,
sourcefn tap_ref<F, R>(self, func: F) -> Self where
Self: AsRef<T>,
F: FnOnce(&T) -> R,
fn tap_ref<F, R>(self, func: F) -> Self where
Self: AsRef<T>,
F: FnOnce(&T) -> R,
Provides immutable access to the reference for inspection.
sourcefn tap_ref_dbg<F, R>(self, func: F) -> Self where
Self: AsRef<T>,
F: FnOnce(&T) -> R,
fn tap_ref_dbg<F, R>(self, func: F) -> Self where
Self: AsRef<T>,
F: FnOnce(&T) -> R,
Calls tap_ref
in debug builds, and does nothing in release builds.
sourcefn tap_ref_mut<F, R>(self, func: F) -> Self where
Self: AsMut<T>,
F: FnOnce(&mut T) -> R,
fn tap_ref_mut<F, R>(self, func: F) -> Self where
Self: AsMut<T>,
F: FnOnce(&mut T) -> R,
Provides mutable access to the reference for modification.
sourcefn tap_ref_mut_dbg<F, R>(self, func: F) -> Self where
Self: AsMut<T>,
F: FnOnce(&mut T) -> R,
fn tap_ref_mut_dbg<F, R>(self, func: F) -> Self where
Self: AsMut<T>,
F: FnOnce(&mut T) -> R,
Calls tap_ref_mut
in debug builds, and does nothing in release builds.
sourceimpl<T, U> TapBorrow<U> for T where
U: ?Sized,
impl<T, U> TapBorrow<U> for T where
U: ?Sized,
sourcefn tap_borrow<F, R>(self, func: F) -> Self where
Self: Borrow<T>,
F: FnOnce(&T) -> R,
fn tap_borrow<F, R>(self, func: F) -> Self where
Self: Borrow<T>,
F: FnOnce(&T) -> R,
Provides immutable access to the borrow for inspection. Read more
sourcefn tap_borrow_dbg<F, R>(self, func: F) -> Self where
Self: Borrow<T>,
F: FnOnce(&T) -> R,
fn tap_borrow_dbg<F, R>(self, func: F) -> Self where
Self: Borrow<T>,
F: FnOnce(&T) -> R,
Calls tap_borrow
in debug builds, and does nothing in release builds.
sourcefn tap_borrow_mut<F, R>(self, func: F) -> Self where
Self: BorrowMut<T>,
F: FnOnce(&mut T) -> R,
fn tap_borrow_mut<F, R>(self, func: F) -> Self where
Self: BorrowMut<T>,
F: FnOnce(&mut T) -> R,
Provides mutable access to the borrow for modification.
sourceimpl<T> TapDeref for T
impl<T> TapDeref for T
sourcefn tap_deref<F, R>(self, func: F) -> Self where
Self: Deref,
F: FnOnce(&Self::Target) -> R,
fn tap_deref<F, R>(self, func: F) -> Self where
Self: Deref,
F: FnOnce(&Self::Target) -> R,
Immutably dereferences self
for inspection.
sourcefn tap_deref_dbg<F, R>(self, func: F) -> Self where
Self: Deref,
F: FnOnce(&Self::Target) -> R,
fn tap_deref_dbg<F, R>(self, func: F) -> Self where
Self: Deref,
F: FnOnce(&Self::Target) -> R,
Calls tap_deref
in debug builds, and does nothing in release builds.
sourcefn tap_deref_mut<F, R>(self, func: F) -> Self where
Self: DerefMut,
F: FnOnce(&mut Self::Target) -> R,
fn tap_deref_mut<F, R>(self, func: F) -> Self where
Self: DerefMut,
F: FnOnce(&mut Self::Target) -> R,
Mutably dereferences self
for modification.
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcepub fn to_owned(&self) -> T
pub fn to_owned(&self) -> T
Creates owned data from borrowed data, usually by cloning. Read more
sourcepub fn clone_into(&self, target: &mut T)
pub fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more