Struct com::production::ClassAllocation [−][src]
#[repr(transparent)]pub struct ClassAllocation<T: Class> { /* fields omitted */ }
Expand description
An allocated COM class
The class must be heap allocated and not be moved in memory. This wrapper decrements the inner class ref count when dropped and frees the heap allocation as well as the class itself when that ref count is 0.
Implementations
Create a new class allocation
This is not normally used by users of the COM crate but by the code generator
Create an allocated class from a raw pointer
Safety
Must be a valid, owned pointer to an allocated COM class. This returns an owned ClassAllocation
which will drop the wrapped COM class when it is dropped.
Methods from Deref<Target = Pin<Box<T>>>
Gets a pinned shared reference from this pinned pointer.
This is a generic method to go from &Pin<Pointer<T>>
to Pin<&T>
.
It is safe because, as part of the contract of Pin::new_unchecked
,
the pointee cannot move after Pin<Pointer<T>>
got created.
“Malicious” implementations of Pointer::Deref
are likewise
ruled out by the contract of Pin::new_unchecked
.
Trait Implementations
ClassAllocation<T>
is Send
because it represents an owned reference to
a heap allocation, and the changes to that reference count are atomic.
ClassAllocation<T>
is Sync
because it represents an aliased (shared)
reference to a heap-allocated object, and the only way you can gain access
to that heap object is to acquire a &self
(shared) reference.
Auto Trait Implementations
impl<T> RefUnwindSafe for ClassAllocation<T> where
T: RefUnwindSafe,
impl<T> Unpin for ClassAllocation<T>
impl<T> UnwindSafe for ClassAllocation<T> where
T: UnwindSafe,
Blanket Implementations
Mutably borrows from an owned value. Read more