Skip to main content

EnumVariantShape

Struct EnumVariantShape 

Source
#[repr(C)]
pub struct EnumVariantShape { pub name: &'static str, pub payload: &'static [*const TypeDescriptor], }
Expand description

One variant of an enum shape: its source name plus the descriptors for its payload slots, in declaration order. A payload-less variant has an empty slice.

A slot may be null, meaning the producer had no static type for it — exactly the encoding TupleSchema uses. The runtime’s own Option schema is the motivating case: praxis_map_get learns V from the value it found, never from a static type, so Some’s slot is unknown there and known (Int, Text, …) in the schema the codegen builds for the same Option. The two must still be one type, and the value’s descriptor — read off its header, so never wrong — answers for an unknown slot.

Fields§

§name: &'static str§payload: &'static [*const TypeDescriptor]

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.