Struct Shape

Source
#[non_exhaustive]
#[repr(C)]
pub struct Shape { pub id: ConstTypeId, pub layout: Layout, pub vtable: &'static ValueVTable, pub def: Def, pub type_params: &'static [TypeParam], pub doc: &'static [&'static str], }
Expand description

Schema for reflection of a type

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§id: ConstTypeId

Unique type identifier, provided by the compiler.

§layout: Layout

Size, alignment — enough to allocate a value of this type (but not initialize it.)

§vtable: &'static ValueVTable

Function pointers to perform various operations: print the full type name (with generic type parameters), use the Display implementation, the Debug implementation, build a default value, clone, etc.

There are more specific vtables in variants of Def

§def: Def

Further definition of the value: details for structs, enums, scalars, options, smart pointers, arrays, slices, tuples, etc.

This typically lists fields (with shapes and offsets), reprs, variants and contains vtables that let you perform other operations, like inserting into a map or fetching a value from a list.

§type_params: &'static [TypeParam]

Generic parameters for the shape

§doc: &'static [&'static str]

Doc comment lines, collected by facet-derive. Note that they tend to start with a space.

Implementations§

Source§

impl Shape

Source

pub const fn is(&'static self, characteristic: Characteristic) -> bool

Checks if a shape has the given characteristic.

Source

pub const fn is_send(&'static self) -> bool

Check if this shape implements the Send trait

Source

pub const fn is_sync(&'static self) -> bool

Check if this shape implements the Sync trait

Source

pub const fn is_copy(&'static self) -> bool

Check if this shape implements the Copy trait

Source

pub const fn is_eq(&'static self) -> bool

Check if this shape implements the Eq trait

Source

pub const fn is_clone(&'static self) -> bool

Check if this shape implements the Clone trait

Source

pub const fn is_display(&'static self) -> bool

Check if this shape implements the Display trait

Source

pub const fn is_debug(&'static self) -> bool

Check if this shape implements the Debug trait

Source

pub const fn is_partial_eq(&'static self) -> bool

Check if this shape implements the PartialEq trait

Source

pub const fn is_partial_ord(&'static self) -> bool

Check if this shape implements the PartialOrd trait

Source

pub const fn is_ord(&'static self) -> bool

Check if this shape implements the Ord trait

Source

pub const fn is_hash(&'static self) -> bool

Check if this shape implements the Hash trait

Source

pub const fn is_default(&'static self) -> bool

Check if this shape implements the Default trait

Source

pub const fn is_from_str(&'static self) -> bool

Check if this shape implements the FromStr trait

Source

pub fn write_type_name( &self, f: &mut Formatter<'_>, opts: TypeNameOpts, ) -> Result<(), Error>

Writes the name of this type to the given formatter

Source§

impl Shape

Source

pub const fn builder() -> ShapeBuilder

Returns a builder for shape

Source

pub fn is_type<Other>(&'static self) -> bool
where Other: Facet,

Check if this shape is of the given type

Source

pub fn assert_type<Other>(&'static self)
where Other: Facet,

Assert that this shape is of the given type, panicking if it’s not

Source§

impl Shape

Source

pub fn is_shape(&'static self, other: &'static Shape) -> bool

Check if this shape is of the given type

Source

pub fn assert_shape(&'static self, other: &'static Shape)

Assert that this shape is equal to the given shape, panicking if it’s not

Source§

impl Shape

Source

pub fn allocate(&self) -> PtrUninit<'static>

Heap-allocate a value of this shape

Trait Implementations§

Source§

impl Clone for Shape

Source§

fn clone(&self) -> Shape

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Shape

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Display for Shape

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Hash for Shape

Source§

fn hash<H>(&self, state: &mut H)
where H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for Shape

Source§

fn eq(&self, other: &Shape) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for Shape

Source§

impl Eq for Shape

Auto Trait Implementations§

§

impl Freeze for Shape

§

impl RefUnwindSafe for Shape

§

impl Send for Shape

§

impl Sync for Shape

§

impl Unpin for Shape

§

impl UnwindSafe for Shape

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
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.