Project

Trait Project 

Source
pub unsafe trait Project<Src: ?Sized, Dst: ?Sized> {
    // Required method
    fn project(src: PtrInner<'_, Src>) -> *mut Dst;
}
Expand description

A pointer cast or projection.

§Safety

The implementation of project must satisfy its safety post-condition.

Required Methods§

Source

fn project(src: PtrInner<'_, Src>) -> *mut Dst

Projects a pointer from Src to Dst.

§Safety

The returned pointer refers to a non-strict subset of the bytes of src’s referent, and has the same provenance as src.

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.

Implementors§

Source§

impl<Src, Dst> Project<Src, Dst> for CastSized

Source§

impl<Src, Dst> Project<Src, Dst> for CastUnsized
where Src: ?Sized + KnownLayout, Dst: ?Sized + KnownLayout<PointerMetadata = Src::PointerMetadata>,

Source§

impl<T, F, const VARIANT_ID: i128, const FIELD_ID: i128> Project<T, <T as HasField<F, VARIANT_ID, FIELD_ID>>::Type> for Projection<F, VARIANT_ID, FIELD_ID>
where T: HasField<F, VARIANT_ID, FIELD_ID> + ?Sized,

Source§

impl<T, U, V, TU, UV> Project<T, V> for TransitiveProject<U, TU, UV>
where T: ?Sized, U: ?Sized, V: ?Sized, TU: Project<T, U>, UV: Project<U, V>,

Source§

impl<T: ?Sized> Project<T, T> for IdCast