Crate ptr_meta

Source
Expand description

A radioactive stabilization of the ptr_meta RFC.

§Usage

§Sized types

Sized types already have Pointee implemented for them, so most of the time you won’t have to worry about them. However, trying to derive Pointee for a struct that may or may not have a DST as its last field will cause an implementation conflict with the automatic sized implementation.

§slices and strs

These core types have implementations built in.

§Structs with a DST as its last field

You can derive Pointee for last-field DSTs:

use ptr_meta::Pointee;

#[derive(Pointee)]
struct Block<H, T> {
    header: H,
    elements: [T],
}

§Trait objects

You can generate a Pointee for trait objects:

use ptr_meta::pointee;

// Generates Pointee for dyn Stringy
#[pointee]
trait Stringy {
    fn as_string(&self) -> String;
}

Structs§

DynMetadata
The metadata for a Dyn = dyn SomeTrait trait object type.

Traits§

NonNullExt
Extension methods for NonNull.
Pointee
Provides the pointer metadata type of any pointed-to type.
PtrExt
Extension methods for pointers.

Functions§

from_raw_parts
Forms a (possibly-wide) raw pointer from a data address and metadata.
from_raw_parts_mut
Performs the same functionality as from_raw_parts, except that a raw *mut pointer is returned, as opposed to a raw *const pointer.
metadata
Extract the metadata component of a pointer.

Attribute Macros§

pointee
Generates an implementation of Pointee for trait objects.

Derive Macros§

Pointee
Generates an implementation of Pointee for structs with a DST as its last field.