Struct dyn_dyn::DynDynRefMut
source · [−]pub struct DynDynRefMut<'a, B: ?Sized + DynDynBase, T: GetDynDynTable<B> + StableDeref + DerefMut>(_, _);Expand description
Wraps a mutable reference to a pointer implementing GetDynDynTable<B> and which can be dereferenced to perform the downcast.
Using dyn_dyn_cast! on this struct will call GetDynDynTable::get_dyn_dyn_table on the pointer itself, then dereference this
pointer to perform the downcast. This allows a pointer implementing DynDyn<B> to be downcast into a mutable reference without moving
the pointer itself.
Implementations
sourceimpl<'a, B: ?Sized + DynDynBase, T: GetDynDynTable<B> + StableDeref + DerefMut> DynDynRefMut<'a, B, T>
impl<'a, B: ?Sized + DynDynBase, T: GetDynDynTable<B> + StableDeref + DerefMut> DynDynRefMut<'a, B, T>
sourcepub fn new(r: &'a mut T) -> Self
pub fn new(r: &'a mut T) -> Self
Creates a new DynDynRefMut for the provided mutable reference to a pointer.
Trait Implementations
sourceimpl<'a, B: ?Sized + DynDynBase, T: DynDyn<'a, B> + StableDeref + DerefMut + 'a> DowncastUnchecked<'a, B> for DynDynRefMut<'a, B, T> where
T::Target: Unsize<B>,
impl<'a, B: ?Sized + DynDynBase, T: DynDyn<'a, B> + StableDeref + DerefMut + 'a> DowncastUnchecked<'a, B> for DynDynRefMut<'a, B, T> where
T::Target: Unsize<B>,
type DowncastResult<D: ?Sized + 'a> = &'a mut D
type DowncastResult<D: ?Sized + 'a> = &'a mut D
The result of downcasting this pointer to point to the type D. Note that this type need not have the same outer wrapper as the
type implementing DowncastUnchecked, since the result of the downcast may involve coercions and dereferences. Read more
sourceunsafe fn downcast_unchecked<D: ?Sized + DynDynCastTarget>(
self,
metadata: DynMetadata<D::Root>
) -> Self::DowncastResult<D>
unsafe fn downcast_unchecked<D: ?Sized + DynDynCastTarget>(
self,
metadata: DynMetadata<D::Root>
) -> Self::DowncastResult<D>
Downcasts this pointer into a new pointer pointing to the same object, but having type D. Read more
sourceimpl<'a, B: ?Sized + DynDynBase, T: DynDyn<'a, B> + StableDeref + DerefMut + 'a> GetDynDynTable<B> for DynDynRefMut<'a, B, T> where
T::Target: Unsize<B>,
impl<'a, B: ?Sized + DynDynBase, T: DynDyn<'a, B> + StableDeref + DerefMut + 'a> GetDynDynTable<B> for DynDynRefMut<'a, B, T> where
T::Target: Unsize<B>,
type DynTarget = <T as Deref>::Target
type DynTarget = <T as Deref>::Target
The actual type that this pointer currently points to. This type is used to allow propagation of auto trait bounds such as Send
and Sync in the dyn_dyn_cast! macro. Read more
sourcefn get_dyn_dyn_table(&self) -> DynDynTable
fn get_dyn_dyn_table(&self) -> DynDynTable
Gets the DynDynTable for the object that this pointer points to.
Auto Trait Implementations
impl<'a, B: ?Sized, T> RefUnwindSafe for DynDynRefMut<'a, B, T> where
T: RefUnwindSafe,
impl<'a, B: ?Sized, T> Send for DynDynRefMut<'a, B, T> where
T: Send,
impl<'a, B: ?Sized, T> Sync for DynDynRefMut<'a, B, T> where
T: Sync,
impl<'a, B: ?Sized, T> Unpin for DynDynRefMut<'a, B, T>
impl<'a, B, T> !UnwindSafe for DynDynRefMut<'a, B, T>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more