#[derive(EnumPtr)]
{
// Attributes available to this derive:
#[enum_ptr]
}
Expand description
Derives conversions to and from Compact
.
ยงExamples
use enum_ptr::{EnumPtr, Unit};
#[derive(EnumPtr)]
#[enum_ptr(
// copy, // derives conversions to and from `CompactCopy`
borrow( // derives a reference type and `impl CompactBorrow`
name = "FooRef", // default: ident + "Ref"
derive(Clone, Copy), // default: none
),
borrow_mut( // derives a reference type and `impl CompactBorrowMut`
name = "FooRefMut", // default: ident + "RefMut"
derive(Debug), // default: none
),
)]
#[repr(C, usize)]
enum Foo {
// `borrow` / `borrow_mut` requires all unskipped fields
// to implement `FieldDeref` / `FieldDerefMut`
A(Box<i64>), // ref type: `&i64` / `&mut i64`
B(Option<Box<i64>>), // ref type: `Option<&i64>` / `Option<&mut i64>`
// use `skip` to skip both, or use `skip_borrow` / `skip_borrow_mut`
#[enum_ptr(skip)]
C(Unit), // ref type: `PhantomData` (skipped)
}