Expand description
§facet-reflect
Whereas the core facet crate provides essential traits like Facet itself, and
data structures like Type, StructType, Field, etc., facet-reflect uses that
information about the shape of types to allow:
- Read-only access to already-initialized values (via
Peek) - Construction of values from scratch (via
Partial)
This allows, respectively, serialization and deserialization, without risking breaking
invariants in types that implement Facet.
§Sponsors
Thanks to all individual sponsors:
…along with corporate sponsors:
…without whom this work could not exist.
§Special thanks
The facet logo was drawn by Misiasart.
§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§
- deferred_
materialization - Deferred Materialization
Macros§
- debug
- Forwards to tracing::debug when the tracing feature is enabled
- trace
- Forwards to tracing::trace when the tracing feature is enabled
Structs§
- Covariant
Peek - A covariant wrapper around
Peekfor types that can safely shrink lifetimes. - Duplicate
Field Error - Error when building a resolution.
- Field
Info - Information about a single field in a resolution.
- Field
Item - A field item with runtime state for serialization.
- Field
Iter - An iterator over all the fields of a struct or enum. See
HasFields::fields - Field
Path - A path through the type tree to a field.
- Fields
ForSerialize Iter - An iterator over the fields of a struct or enum that should be serialized. See
HasFields::fields_for_serialize - Guard
- A guard structure to manage memory allocation and deallocation.
- Heap
Value - A type-erased value stored on the heap
- Owned
Peek - An Owned version of a Peek used for custom serialization
- Partial
- A type-erased, heap-allocated, partially-initialized value.
- Peek
- A read-only view into a value with runtime type information.
- Peek
Dynamic Value - Lets you read from a dynamic value (implements read-only operations for DynamicValue types)
- Peek
Dynamic Value Array Iter - Iterator over array elements in a dynamic value
- Peek
Dynamic Value Object Iter - Iterator over object entries in a dynamic value
- Peek
Enum - Lets you read from an enum (implements read-only enum operations)
- Peek
List - Lets you read from a list (implements read-only
facet_core::ListVTableproxies) - Peek
List Iter - Iterator over a
PeekList - Peek
List Like - Lets you read from a list, array or slice
- Peek
List Like Iter - Iterator over a
PeekListLike - PeekMap
- Lets you read from a map (implements read-only
facet_core::MapVTableproxies) - Peek
MapIter - Iterator over key-value pairs in a
PeekMap - Peek
NdArray - Lets you read from an n-dimensional array (implements read-only
facet_core::NdArrayVTableproxies) - Peek
Option - Lets you read from an option (implements read-only option operations)
- Peek
Pointer - Represents a pointer that can be peeked at during memory inspection.
- Peek
Result - Lets you read from a result (implements read-only result operations)
- PeekSet
- Lets you read from a set
- Peek
SetIter - Iterator over values in a
PeekSet - Peek
Struct - Lets you read from a struct (implements read-only struct operations)
- Peek
Tuple - Lets you read from a tuple
- Poke
- A mutable view into a value with runtime type information.
- Poke
Enum - Lets you mutate an enum’s fields.
- Poke
List - Lets you mutate a list (implements mutable
facet_core::ListVTableproxies) - Poke
List Iter - Iterator over a
PokeList - Poke
Struct - Lets you mutate a struct’s fields.
- Resolution
- One possible “shape” the flattened type could take.
- Span
- Source span with offset and length.
- Spanned
- A value with source span information.
- Tuple
Type - Local representation of a tuple type for peek operations
- ValueId
- A unique identifier for a peek value
- Variant
Selection - Records that a specific enum field has a specific variant selected.
Enums§
- Field
Category - Category of a field for format-aware field lookup.
- Field
Key - A key for field lookup in schemas and solvers.
- List
Like Def - Fields for types which act like lists
- Match
Result - Result of matching input fields against a resolution.
- Path
Segment - A segment in a field path.
- Reflect
Error - Errors that can occur when reflecting on types.
- Scalar
Type - All scalar types supported out of the box by facet.
- Stride
Error - Error that can occur when trying to access an n-dimensional array as strided
- Tracker
Kind - A kind-only version of Tracker
- Variant
Error - Error that can occur when trying to determine variant information
Traits§
- HasFields
- Trait for types that have field methods
Functions§
- find_
span_ metadata_ field - Find the span metadata field in a struct shape.
- get_
spanned_ inner_ shape - Extract the inner value shape from a Spanned-like struct.
- is_
spanned_ shape - Check if a shape represents a type with span metadata (like
Spanned<T>). - peek_
enum - Returns the enum definition if the shape represents an enum, None otherwise
- peek_
enum_ repr - Returns the enum representation if the shape represents an enum, None otherwise
- peek_
enum_ variants - Returns the enum variants if the shape represents an enum, None otherwise
Type Aliases§
- DomKey
Path - A path of serialized keys for probing (DOM-aware). Each key includes the category (attribute vs element) for DOM formats.
- KeyPath
- A path of serialized key names for probing (flat formats). Unlike FieldPath which tracks the internal type structure (including variant selections), KeyPath only tracks the keys as they appear in the serialized format.
- Tuple
Field - Field index and associated peek value