Expand description
  facet-trait
Thanks to all individual and corporate sponsors, without whom this work could not exist:
Defines the core Facet trait that powers runtime reflection in the facet ecosystem.
§The Facet Trait
The Facet trait is the foundation of facet’s reflection system. Types that implement Facet:
- Provide their memory layout information
- Describe their structure (fields, variants, etc.)
- Enable safe runtime manipulation
- Can be safely type-erased and restored
§Built-in Implementations
This crate provides Facet implementations for many standard library types:
- Basic types (
bool, integers, floats) - Collections (
Vec,HashMap, etc.) - Smart pointers (
Box,Rc,Arc) - Other common types (
String,Option,Result)
These implementations make it easy to use facet with existing Rust code.
§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.
Re-exports§
pub use facet_spez;
Macros§
- value_
vtable - Creates a
ValueVTablefor a given type.
Structs§
- 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 - 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 - 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
- Opaque
- A type-erased pointer to an initialized value
- Opaque
Const - A type-erased read-only pointer to an initialized value.
- Opaque
Uninit - 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 - Struct
Def - Common fields for struct-like types
- Struct
DefBuilder - Builder for StructDef
- Type
Name Opts - Options for formatting the name of a type
- 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
- Field
Attribute - An attribute that can be set on a field
- Field
Error - Errors encountered when calling
field_by_indexorfield_by_name - Parse
Error - Error returned by
ParseFn - Struct
Kind - Describes the kind of struct (useful for deserializing)
- TryFrom
Error - Error type for TryFrom conversion failures
- Variant
Kind - Represents the different kinds of variants that can exist in a Rust enum
Traits§
- Facet
- Allows querying the
Shapeof a type, which in turn lets us inspect any fields, build a value of this type progressively, etc. - Shape
Ext - Extension trait to provide
is_typeandassert_type
Functions§
- clone_
into_ fn_ for - Generates a [
CloneInPlaceFn] for a concrete type - cmp_
fn_ for - Generates a
CmpFnfor a concrete type - debug_
fn_ for - Generates a
DebugFnfor a concrete type - default_
in_ place_ fn_ for - Generates a
DefaultInPlaceFnfor a concrete type - display_
fn_ for - Generates a
DisplayFnfor a concrete type - drop_
in_ place_ fn_ for - Generates a
DropInPlaceFnfor a concrete type - hash_
fn_ for - Generates a
HashFnfor a concrete type - parse_
fn_ for - Generates a
ParseFnfor a concrete type - partial_
eq_ fn_ for - Generates a
PartialEqFnfor a concrete type - partial_
ord_ fn_ for - Generates a
PartialOrdFnfor a concrete type
Type Aliases§
- 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
- Drop
InPlace Fn - Function to drop a value
- HashFn
- Function to hash a value
- Hasher
Write Fn - Function to write bytes to a hasher
- 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
- 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
- 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
- TryFrom
Fn - Function to try converting from another type
- Type
Name Fn - A function that formats the name of a type.