Struct bones_lib::prelude::SchemaData

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) + Send + Sync)>>,
    pub drop_fn: Option<Unsafe<&'static (dyn Fn(*mut c_void) + Send + Sync)>>,
    pub default_fn: Option<Unsafe<&'static (dyn Fn(*mut c_void) + Send + Sync)>>,
    pub hash_fn: Option<Unsafe<&'static (dyn Fn(*const c_void) -> u64 + Send + Sync)>>,
    pub eq_fn: Option<Unsafe<&'static (dyn Fn(*const c_void, *const c_void) -> bool + Send + Sync)>>,
}
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) + Send + Sync)>>

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

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

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

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

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 + Send + Sync)>>

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 + Send + Sync)>>

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

Trait Implementations§

§

impl Clone for SchemaData

§

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
§

impl Debug for SchemaData

§

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

Formats the value using the given formatter. Read more

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

source§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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.

§

impl<T> RawClone for T
where T: Clone,

§

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

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

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

Get a callback suitable for [SchemaData].
§

impl<T> RawDrop for T

§

unsafe fn raw_drop(ptr: *mut c_void)

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

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

Get a callback suitable for [SchemaData].
source§

impl<T> ToOwned for T
where 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 T
where 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 T
where 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 T
where V: MultiLane<T>,

§

fn vzip(self) -> V