Expand description
facet-core
Logo by Misiasart
Thanks to all individual and corporate sponsors, without whom this work could not exist:
Defines the core types and traits used throughout the facet ecosystem for runtime reflection:
Facet: exposes aSHAPEassociated constShape: The central type that describes the memory layout and capabilities of a type- Various vtables that define how to manipulate types at runtime
- The
Deftree, which describes type definitions (structs, enums, etc.)
This crate is foundational to facet’s reflection capabilities, providing the type system that enables runtime type manipulation.
§License
Licensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Modules§
- spez
- Auto-deref specialization helpers for the Facet reflection system
Macros§
- value_
vtable - Creates a
ValueVTablefor a given type. - value_
vtable_ inner - Creates a
ValueVTablefor a given type, seevalue_vtable!for more details.
Structs§
- Array
Def - Fields for array types
- Array
DefBuilder - Builder for ArrayDef
- ArrayV
Table - Virtual table for a list-like type (like
Vec<T>, but alsoHashSet<T>, etc.) - ArrayV
Table Builder - Builds a
ArrayVTable - Bool
Affinity - Definition for boolean scalar affinities
- Bool
Affinity Builder - Builder for BoolAffinity
- Char
Affinity - Definition for character scalar affinities
- Char
Affinity Builder - Builder for CharAffinity
- Complex
Number Affinity - Definition for string-like scalar affinities
- Complex
Number Affinity Builder - Builder for ComplexNumberAffinity
- Const
Type Id - TypeId equivalent usable in const contexts.
- Empty
Affinity - Definition for empty scalar affinities
- Empty
Affinity Builder - Builder for EmptyAffinity
- EnumDef
- Fields for enum types
- Enum
DefBuilder - Builder for EnumDef
- Field
- Describes a field in a struct or tuple
- Field
Builder - Builder for Field
- Field
Flags - Flags that can be applied to fields to modify their behavior
- Hasher
Proxy - Provides an implementation of
core::hash::Hasherfor a given hasher pointer and write function - IpAddr
Affinity - Definition for IP address scalar affinities
- IpAddr
Affinity Builder - Builder for IpAddrAffinity
- ListDef
- Fields for list types
- List
DefBuilder - Builder for ListDef
- ListV
Table - Virtual table for a list-like type (like
Vec<T>, but alsoHashSet<T>, etc.) - ListV
Table Builder - Builds a
ListVTable - Lock
GuardV Table - Functions for manipulating a guard
- Lock
Result - Type-erased result of locking a mutex-like smart pointer
- MapDef
- Fields for map types
- MapDef
Builder - Builder for MapDef
- MapIterV
Table - VTable for an iterator over a map
- MapIterV
Table Builder - Builds a
MapIterVTable - MapV
Table - Virtual table for a Map<K, V>
- MapV
Table Builder - Builds a
MapVTable - Marker
Traits - Bitflags for common marker traits that a type may implement
- Number
Affinity - Definition for number-like scalar affinities
- Number
Affinity Builder - Builder for NumberAffinity
- Opaque
- Helper type for opaque members
- Opaque
Affinity - Definition for opaque scalar affinities
- Opaque
Affinity Builder - Builder for OpaqueAffinity
- Option
Def - Describes an Option — including a vtable to query and alter its state,
and the inner shape (the
TinOption<T>). - Option
DefBuilder - Builder for OptionDef
- OptionV
Table - Virtual table for
Option<T> - OptionV
Table Builder - Builds an
OptionVTable - Other
Affinity - Definition for other scalar affinities
- Other
Affinity Builder - Builder for OtherAffinity
- Path
Affinity - Definition for path scalar affinities
- Path
Affinity Builder - Builder for PathAffinity
- PtrConst
- A type-erased read-only pointer to an initialized value.
- PtrMut
- A type-erased pointer to an initialized value
- PtrUninit
- A type-erased pointer to an uninitialized value
- Scalar
Def - Definition for scalar types
- Scalar
DefBuilder - Builder for ScalarDef
- Shape
- Schema for reflection of a type
- Shape
Builder - Builder for
Shape - Slice
Def - Fields for slice types
- Slice
DefBuilder - Builder for SliceDef
- SliceV
Table - Virtual table for a slice-like type (like
Vec<T>, but alsoHashSet<T>, etc.) - SliceV
Table Builder - Builds a
SliceVTable - Smart
Pointer Def - Describes a smart pointer — including a vtable to query and alter its state, and the inner shape (the pointee type in the smart pointer).
- Smart
Pointer DefBuilder - Builder for creating a
SmartPointerDef. - Smart
Pointer Flags - Flags to represent various characteristics of smart pointers
- Smart
PointerV Table - Functions for interacting with a smart pointer
- Smart
PointerV Table Builder - Builder for creating a
SmartPointerVTable. - Socket
Addr Affinity - Definition for socket address scalar affinities
- Socket
Addr Affinity Builder - Builder for SocketAddrAffinity
- String
Affinity - Definition for string-like scalar affinities
- String
Affinity Builder - Builder for StringAffinity
- Struct
- Common fields for struct-like types
- Struct
Builder - Builder for StructDef
- Time
Affinity - Definition for Datetime/Timestamp scalar affinities
- Time
Affinity Builder - Builder for UuidAffinity
- Type
Name Opts - Options for formatting the name of a type
- Type
Param - Represents a lifetime parameter, e.g.,
'aor'a: 'b + 'c. - Uuid
Affinity - Definition for UUID and UUID-like scalar affinities
- Uuid
Affinity Builder - Builder for UuidAffinity
- ValueV
Table - VTable for common operations that can be performed on any shape
- ValueV
Table Builder - Builds a
ValueVTable - Variant
- Describes a variant of an enum
- Variant
Builder - Builder for Variant
Enums§
- Characteristic
- A characteristic a shape can have
- Def
- The definition of a shape: is it more like a struct, a map, a list?
- Enum
Repr - All possible representations for Rust enums — ie. the type/size of the discriminant
- Field
Attribute - An attribute that can be set on a field
- Field
Error - Errors encountered when calling
field_by_indexorfield_by_name - Known
Smart Pointer - Represents common standard library smart pointer kinds
- Number
Bits - Bit representation of numbers
- Parse
Error - Error returned by
ParseFn - Scalar
Affinity - Scalar affinity: what a scalar spiritually is: a number, a string, a bool, something else entirely?
- Signedness
- Represents whether a numeric type is signed or unsigned
- Struct
Kind - Describes the kind of struct (useful for deserializing)
- TryFrom
Error - Error type for TryFrom conversion failures
Traits§
- Facet
- Allows querying the
Shapeof a type, which in turn lets us inspect any fields, build a value of this type progressively, etc.
Functions§
Type Aliases§
- Array
GetItem PtrFn - Get pointer to the item at the given index. Panics if out of bounds.
- Borrow
Fn - Tries to obtain a reference to the inner value of the smart pointer.
- Clone
Into Fn - Function to clone a value into another already-allocated value
- CmpFn
- Function to compare two values and return their ordering
- DebugFn
- Function to format a value for debug. If this returns None, the shape did not implement Debug.
- Default
InPlace Fn - Function to set a value to its default in-place
- Display
Fn - Function to format a value for display
- Downgrade
Into Fn - Downgrades a strong pointer to a weak one.
- Drop
InPlace Fn - Function to drop a value
- HashFn
- Function to hash a value
- Hasher
Write Fn - Function to write bytes to a hasher
- Invariants
Fn - Function to validate the invariants of a value. If it returns false, the value is considered invalid.
- List
GetItem PtrFn - Get pointer to the item at the given index. Panics if out of bounds.
- List
Init InPlace With Capacity Fn - Initialize a list in place with a given capacity
- List
LenFn - Get the number of items in the list
- List
Push Fn - Push an item to the list
- LockFn
- Acquires a lock on a mutex-like smart pointer
- MapContains
KeyFn - Check if the map contains a key
- MapGet
Value PtrFn - Get pointer to a value for a given key, returns None if not found
- MapInit
InPlace With Capacity Fn - Initialize a map in place with a given capacity
- MapInsert
Fn - Insert a key-value pair into the map
- MapIter
Dealloc Fn - Deallocate the iterator
- MapIter
Fn - Get an iterator over the map
- MapIter
Next Fn - Get the next key-value pair from the iterator
- MapLen
Fn - Get the number of entries in the map
- NewInto
Fn - Creates a new smart pointer wrapping the given value. Writes the smart pointer
into the given
this. - Option
GetValue Fn - Get the value contained in an option, if present
- Option
Init None Fn - Initialize an option with None
- Option
Init Some Fn - Initialize an option with Some(value)
- Option
IsSome Fn - Check if an option contains a value
- Option
Replace With Fn - Replace an existing option with a new value
- ParseFn
- Function to parse a value from a string.
- Partial
EqFn - Function to check if two values are partially equal
- Partial
OrdFn - Function to compare two values and return their ordering if comparable
- ReadFn
- Acquires a read lock on a reader-writer lock-like smart pointer
- Slice
GetItem PtrFn - Get pointer to the item at the given index. Panics if out of bounds.
- Slice
LenFn - Get the number of items in the slice
- TryFrom
Fn - Function to try converting from another type
- Type
Name Fn - A function that formats the name of a type.
- Upgrade
Into Fn - Tries to upgrade the weak pointer to a strong one.
- WriteFn
- Acquires a write lock on a reader-writer lock-like smart pointer