#[repr(transparent)]pub struct VBox<T: ?Sized + VTableMetaDrop> { /* private fields */ }
Expand description
An equivalent of a Box that holds a pointer to a VTable and a pointer to an instance. A VBox frees the instance when dropped.
The type parameter is supposed to be the VTable type.
The VBox implements Deref so one can access all the members of the vtable.
This is only valid if the VTable has a drop
function (so that the #[vtable]
macro
implements the VTableMetaDrop
trait for it)
Implementations
sourceimpl<T: ?Sized + VTableMetaDrop> VBox<T>
impl<T: ?Sized + VTableMetaDrop> VBox<T>
sourcepub fn new<X: HasStaticVTable<T>>(value: X) -> Self
pub fn new<X: HasStaticVTable<T>>(value: X) -> Self
Create a new VBox from an instance of a type that can be associated with a VTable.
Will move the instance on the heap.
(the HasStaticVTable
is implemented by the “MyTrait”VTable_static!
macro generated by
the #vtable macro)
sourcepub unsafe fn from_raw(vtable: NonNull<T::VTable>, ptr: NonNull<u8>) -> Self
pub unsafe fn from_raw(vtable: NonNull<T::VTable>, ptr: NonNull<u8>) -> Self
Create a new VBox from raw pointers
Safety
The ptr
needs to be a valid object fitting the vtable
.
ptr must be properly allocated so it can be dropped.
sourcepub fn borrow_mut(&mut self) -> VRefMut<'_, T>
pub fn borrow_mut(&mut self) -> VRefMut<'_, T>
Gets a VRefMut pointing to this box
Trait Implementations
sourceimpl<T: ?Sized + VTableMetaDrop> Deref for VBox<T>
impl<T: ?Sized + VTableMetaDrop> Deref for VBox<T>
sourceimpl<T: ?Sized + VTableMetaDrop> DerefMut for VBox<T>
impl<T: ?Sized + VTableMetaDrop> DerefMut for VBox<T>
Auto Trait Implementations
impl<T: ?Sized> RefUnwindSafe for VBox<T> where
<T as VTableMeta>::Target: RefUnwindSafe,
impl<T> !Send for VBox<T>
impl<T> !Sync for VBox<T>
impl<T: ?Sized> Unpin for VBox<T> where
<T as VTableMeta>::Target: Unpin,
impl<T: ?Sized> UnwindSafe for VBox<T> where
<T as VTableMeta>::Target: UnwindSafe,
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