#[repr(C)]pub struct PackagedTraitObject {
pub trait_object: TraitObject,
pub entry: unsafe extern "C" fn(flag: AbiProtocol),
}Expand description
A trait object together with its entry point
Fields§
§trait_object: TraitObjectType erased trait object for an ABI-exported trait
entry: unsafe extern "C" fn(flag: AbiProtocol)The low level entry point
Implementations§
source§impl PackagedTraitObject
impl PackagedTraitObject
sourcepub fn new<T: AbiExportable + ?Sized>(boxed: Box<T>) -> PackagedTraitObject
pub fn new<T: AbiExportable + ?Sized>(boxed: Box<T>) -> PackagedTraitObject
Create a PackagedTraitObject from a Box<T> . T must be a trait object.
T must implement AbiExportable, which means it has an ::ABI_ENTRY associated
type that gives the entry point.
sourcepub fn new_from_ptr<T>(r: *const T) -> PackagedTraitObjectwhere
T: AbiExportable + ?Sized,
pub fn new_from_ptr<T>(r: *const T) -> PackagedTraitObjectwhere
T: AbiExportable + ?Sized,
Create a PackagedTraitObject from a &T. T must be a trait object.
T must implement AbiExportable, which means it has an ::ABI_ENTRY associated
type that gives the entry point.
Note, we use *const T here even for mutable cases, but it doesn’t matter
since it’s never used, it’s just cast to other stuff and then finally
back to the right type.
sourcepub fn serialize(
self,
serializer: &mut Serializer<'_, impl Write>,
) -> Result<(), SavefileError>
pub fn serialize( self, serializer: &mut Serializer<'_, impl Write>, ) -> Result<(), SavefileError>
‘Serialize’ this object. I.e, write it to a binary buffer, so that we can send it to a foreign library.
sourcepub unsafe fn deserialize(
deserializer: &mut Deserializer<'_, impl Read>,
) -> Result<PackagedTraitObject, SavefileError>
pub unsafe fn deserialize( deserializer: &mut Deserializer<'_, impl Read>, ) -> Result<PackagedTraitObject, SavefileError>
‘Deserialize’ this object. I.e, read it from a binary buffer, so that we can receive it from a foreign library.
§Safety
The data available to read from Deserializer must be correct, and contain a valid serialized PackagedTraitObject.