pub unsafe trait MetaQuery {
type Output<'t>: Sized;
type OutputPtr<'t>: Sized;
// Required methods
fn query_ref<'t, T: MetaTuple + ?Sized + 't>(
input: &'t T,
) -> Option<Self::Output<'t>>;
fn query_dyn_ref<'t>(input: &'t dyn MetaAny) -> Option<Self::Output<'t>>;
fn query_mut_ptr<'t, T: MetaTuple + ?Sized + 't>(
input: &'t T,
) -> Option<Self::OutputPtr<'t>>;
fn query_dyn_mut_ptr<'t>(
input: &'t dyn MetaAny,
) -> Option<Self::OutputPtr<'t>>;
unsafe fn from_ptr<'t>(ptr: Self::OutputPtr<'t>) -> Self::Output<'t>;
fn validate() -> bool;
// Provided methods
fn query_mut<'t, T: MetaTuple + ?Sized + 't>(
input: &'t mut T,
) -> Option<Self::Output<'t>> { ... }
fn query_dyn_mut<'t>(input: &'t mut dyn MetaAny) -> Option<Self::Output<'t>> { ... }
}Expand description
Required Associated Types§
Required Methods§
fn query_ref<'t, T: MetaTuple + ?Sized + 't>( input: &'t T, ) -> Option<Self::Output<'t>>
fn query_dyn_ref<'t>(input: &'t dyn MetaAny) -> Option<Self::Output<'t>>
fn query_mut_ptr<'t, T: MetaTuple + ?Sized + 't>( input: &'t T, ) -> Option<Self::OutputPtr<'t>>
fn query_dyn_mut_ptr<'t>(input: &'t dyn MetaAny) -> Option<Self::OutputPtr<'t>>
Sourceunsafe fn from_ptr<'t>(ptr: Self::OutputPtr<'t>) -> Self::Output<'t>
unsafe fn from_ptr<'t>(ptr: Self::OutputPtr<'t>) -> Self::Output<'t>
§Safety
Input must point to valid data.
fn validate() -> bool
Provided Methods§
fn query_mut<'t, T: MetaTuple + ?Sized + 't>( input: &'t mut T, ) -> Option<Self::Output<'t>>
fn query_dyn_mut<'t>(input: &'t mut dyn MetaAny) -> Option<Self::Output<'t>>
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.