pub unsafe trait LateStruct:
Sized
+ 'static
+ LateStructSealed {
type EraseTo: ?Sized + 'static;
// Required method
fn raw_descriptor() -> &'static RawLateStructDescriptor;
// Provided method
fn descriptor() -> &'static LateStructDescriptor<Self> { ... }
}Expand description
A trait for a marker type representing a late-initialized structure.
This trait cannot be implemented manually. Instead, it should be implemented using the
late_struct! macro. Most documentation for this trait can be found there.
§Safety
This trait can only be safely implemented through the late_struct! macro.
Required Associated Types§
Sourcetype EraseTo: ?Sized + 'static
type EraseTo: ?Sized + 'static
The type all fields are expected to coerce into. This is usually a trait object.
In the following invocation of late_struct!…
use late_struct::late_struct;
late_struct!(MyType => dyn Any + Send + Sync);…the type <MyType as LateStruct>::EraseTo would be dyn Any + Send + Sync.
If no erase-to type is specified in an invocation of late_struct!, a default
dyn 'static + fmt::Debug type will be used.
Required Methods§
Sourcefn raw_descriptor() -> &'static RawLateStructDescriptor
fn raw_descriptor() -> &'static RawLateStructDescriptor
Fetches the untyped descriptor associated with this structure.
See LateStruct::descriptor for a typed version of this method.
Provided Methods§
Sourcefn descriptor() -> &'static LateStructDescriptor<Self>
fn descriptor() -> &'static LateStructDescriptor<Self>
Fetches the strongly-typed descriptor associated with this structure.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.