pub struct SchemaData {
    pub name: Ustr,
    pub full_name: Ustr,
    pub kind: SchemaKind,
    pub type_data: TypeDatas,
    pub type_id: Option<TypeId>,
    pub clone_fn: Option<Unsafe<&'static (dyn Fn(*const c_void, *mut c_void) + Sync + Send + 'static)>>,
    pub drop_fn: Option<Unsafe<&'static (dyn Fn(*mut c_void) + Sync + Send + 'static)>>,
    pub default_fn: Option<Unsafe<&'static (dyn Fn(*mut c_void) + Sync + Send + 'static)>>,
    pub hash_fn: Option<Unsafe<&'static (dyn Fn(*const c_void) -> u64 + Sync + Send + 'static)>>,
    pub eq_fn: Option<Unsafe<&'static (dyn Fn(*const c_void, *const c_void) -> bool + Sync + Send + 'static)>>,
}
Expand description

Schema information describing the memory layout of a type.

Fields§

§name: Ustr

The short name of the type.

Note: Currently bones isn’t very standardized as far as name generation for Rust or other language type names, and this is mostly for diagnostics. This may change in the future but for now there are no guarantees.

§full_name: Ustr

The full name of the type, including any module specifiers.

Note: Currently bones isn’t very standardized as far as name generation for Rust or other language type names, and this is mostly for diagnostics. This may change in the future but for now there are no guarantees.

§kind: SchemaKind

The kind of schema.

§type_data: TypeDatas

Container for storing Schema type datas.

“Type data” is extra data that is stored in a type’s Schema that may be used for any number of different purposes.

Each type data is a type that implements HasSchema and usually describes something about the type that has the schema. For instance, a type data could be added to a struct that can be used to serialize/deserialize that type.

If a type data also implements FromType it can be derived for types that it implements FromType for:

#[derive(HasSchema, Default, Clone)]
struct SomeTypeData;

impl<T> FromType<T> for SomeTypeData {
    fn from_type() -> Self {
        SomeTypeData
    }
}

#[derive(HasSchema, Default, Clone)]
#[derive_type_data(SomeTypeData)]
struct MyData;
§type_id: Option<TypeId>

The Rust TypeId that this Schema was created from, if it was created from a Rust type.

§clone_fn: Option<Unsafe<&'static (dyn Fn(*const c_void, *mut c_void) + Sync + Send + 'static)>>

The function pointer that may be used to clone data with this schema.

§drop_fn: Option<Unsafe<&'static (dyn Fn(*mut c_void) + Sync + Send + 'static)>>

The function pointer that may be used to drop data with this schema.

§default_fn: Option<Unsafe<&'static (dyn Fn(*mut c_void) + Sync + Send + 'static)>>

The function pointer that may be used to write a default value to a pointer.

§hash_fn: Option<Unsafe<&'static (dyn Fn(*const c_void) -> u64 + Sync + Send + 'static)>>

The function pointer that may be used to hash the value.

§eq_fn: Option<Unsafe<&'static (dyn Fn(*const c_void, *const c_void) -> bool + Sync + Send + 'static)>>

The function pointer that may be used to compare two values for equality. Note that this is total equality, not partial equality.

Trait Implementations§

source§

impl Clone for SchemaData

source§

fn clone(&self) -> SchemaData

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 SchemaData

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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 Twhere 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> RawClone for Twhere T: Clone,

source§

unsafe fn raw_clone(src: *const c_void, dst: *mut c_void)

Write the default value of the type to the pointer. Read more
source§

fn raw_clone_cb( ) -> Unsafe<&'static (dyn Fn(*const c_void, *mut c_void) + Sync + Send + 'static)>

Get a callback suitable for SchemaData.
source§

impl<T> RawDrop for T

source§

unsafe fn raw_drop(ptr: *mut c_void)

Write the default value of the type to the pointer. Read more
source§

fn raw_drop_cb( ) -> Unsafe<&'static (dyn Fn(*mut c_void) + Sync + Send + 'static)>

Get a callback suitable for SchemaData.
source§

impl<T> ToOwned for Twhere T: Clone,

§

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, U> TryFrom<U> for Twhere U: Into<T>,

§

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 Twhere U: TryFrom<T>,

§

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.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V