Trait packed_ptr::Packable

source ·
pub unsafe trait Packable: Copy {
    const MAX_BITS: usize = _;

    // Required methods
    fn pack(self) -> usize;
    unsafe fn unpack(value: usize) -> Self;
}
Expand description

A type that can be packed into a pointer.

Safety

This trait is unsafe because it has certain requirements that must be upheld by the implementor:

  • unpack(pack(x)) == x for all x.
  • MAX_BITS must be the maximum number of bits that are returned by pack.
  • pack and unpack must be infallible.

Provided Associated Constants§

source

const MAX_BITS: usize = _

The maximum number of bits of the output of pack.

Required Methods§

source

fn pack(self) -> usize

Packs a value into an integer.

Safety

The value returned by this function must be entirely contained within the lower MAX_BITS bits of the returned integer. The remaining upper bits MUST be zero.

source

unsafe fn unpack(value: usize) -> Self

Unpacks a value from an integer previously packed by pack.

Safety

value MUST have been previously returned by pack. Implementors can assume that this is the case.

Implementors MUST ensure that the returned value is identical to the value that was passed to pack. In other words, unpack(pack(x)) == x for all x.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl Packable for bool

source§

const MAX_BITS: usize = 1usize

source§

fn pack(self) -> usize

source§

unsafe fn unpack(value: usize) -> Self

source§

impl Packable for i8

source§

fn pack(self) -> usize

source§

unsafe fn unpack(value: usize) -> Self

source§

impl Packable for i16

source§

fn pack(self) -> usize

source§

unsafe fn unpack(value: usize) -> Self

source§

impl Packable for i32

source§

fn pack(self) -> usize

source§

unsafe fn unpack(value: usize) -> Self

source§

impl Packable for i64

source§

fn pack(self) -> usize

source§

unsafe fn unpack(value: usize) -> Self

source§

impl Packable for isize

source§

fn pack(self) -> usize

source§

unsafe fn unpack(value: usize) -> Self

source§

impl Packable for u8

source§

fn pack(self) -> usize

source§

unsafe fn unpack(value: usize) -> Self

source§

impl Packable for u16

source§

fn pack(self) -> usize

source§

unsafe fn unpack(value: usize) -> Self

source§

impl Packable for u32

source§

fn pack(self) -> usize

source§

unsafe fn unpack(value: usize) -> Self

source§

impl Packable for u64

source§

fn pack(self) -> usize

source§

unsafe fn unpack(value: usize) -> Self

source§

impl Packable for ()

source§

fn pack(self) -> usize

source§

unsafe fn unpack(_: usize) -> Self

source§

impl Packable for usize

source§

fn pack(self) -> usize

source§

unsafe fn unpack(value: usize) -> Self

source§

impl<T0: Packable> Packable for (T0,)

source§

const MAX_BITS: usize = _

source§

fn pack(self) -> usize

source§

unsafe fn unpack(value: usize) -> Self

source§

impl<T0: Packable, T1: Packable> Packable for (T0, T1)

source§

const MAX_BITS: usize = _

source§

fn pack(self) -> usize

source§

unsafe fn unpack(value: usize) -> Self

source§

impl<T0: Packable, T1: Packable, T2: Packable> Packable for (T0, T1, T2)

source§

const MAX_BITS: usize = _

source§

fn pack(self) -> usize

source§

unsafe fn unpack(value: usize) -> Self

source§

impl<T0: Packable, T1: Packable, T2: Packable, T3: Packable> Packable for (T0, T1, T2, T3)

source§

const MAX_BITS: usize = _

source§

fn pack(self) -> usize

source§

unsafe fn unpack(value: usize) -> Self

source§

impl<T0: Packable, T1: Packable, T2: Packable, T3: Packable, T4: Packable> Packable for (T0, T1, T2, T3, T4)

source§

const MAX_BITS: usize = _

source§

fn pack(self) -> usize

source§

unsafe fn unpack(value: usize) -> Self

source§

impl<T0: Packable, T1: Packable, T2: Packable, T3: Packable, T4: Packable, T5: Packable> Packable for (T0, T1, T2, T3, T4, T5)

source§

const MAX_BITS: usize = _

source§

fn pack(self) -> usize

source§

unsafe fn unpack(value: usize) -> Self

source§

impl<T0: Packable, T1: Packable, T2: Packable, T3: Packable, T4: Packable, T5: Packable, T6: Packable> Packable for (T0, T1, T2, T3, T4, T5, T6)

source§

const MAX_BITS: usize = _

source§

fn pack(self) -> usize

source§

unsafe fn unpack(value: usize) -> Self

source§

impl<T0: Packable, T1: Packable, T2: Packable, T3: Packable, T4: Packable, T5: Packable, T6: Packable, T7: Packable> Packable for (T0, T1, T2, T3, T4, T5, T6, T7)

source§

const MAX_BITS: usize = _

source§

fn pack(self) -> usize

source§

unsafe fn unpack(value: usize) -> Self

source§

impl<T0: Packable, T1: Packable, T2: Packable, T3: Packable, T4: Packable, T5: Packable, T6: Packable, T7: Packable, T8: Packable> Packable for (T0, T1, T2, T3, T4, T5, T6, T7, T8)

source§

const MAX_BITS: usize = _

source§

fn pack(self) -> usize

source§

unsafe fn unpack(value: usize) -> Self

source§

impl<T0: Packable, T1: Packable, T2: Packable, T3: Packable, T4: Packable, T5: Packable, T6: Packable, T7: Packable, T8: Packable, T9: Packable> Packable for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)

source§

const MAX_BITS: usize = _

source§

fn pack(self) -> usize

source§

unsafe fn unpack(value: usize) -> Self

source§

impl<T: Packable> Packable for Option<T>

source§

const MAX_BITS: usize = _

source§

fn pack(self) -> usize

source§

unsafe fn unpack(value: usize) -> Self

source§

impl<T: Packable, E: Packable> Packable for Result<T, E>

source§

const MAX_BITS: usize = _

source§

fn pack(self) -> usize

source§

unsafe fn unpack(value: usize) -> Self

source§

impl<T: Packable, const N: usize> Packable for [T; N]

source§

const MAX_BITS: usize = _

source§

fn pack(self) -> usize

source§

unsafe fn unpack(value: usize) -> Self

Implementors§