Runtime reflection of Rust values.
serde_derive is infamous for the sheer amount of code its liberal use can introduce
to a workspace.
refloctopus tries to combat that: avoid deriving
Deserialize for most of your types, instead deriveing
Reflect. The reflection
metadata for each type is reasonably small. Using the reflection metadata, a single
Deserialize implementation can marshall any Rust type.
An arm of an enum declaration, describing a variant.
Token indicating what type to expect in the field metadata.
Token indicating length and type of an array to expect in the field metadata.
A named or unnamed field, offset from the base of its containing type.
A cursor into the in-memory densely packed field metadata for a particular type.
An area of memory, owned or borrowed, storing
the field data for a particular
A Rust type, of some kind, with a unique
A location in memory with a known reflected type.
A destination in memory with a known eventual type.
The world of rust type representation, according to reflectopus.
We don't care much how the source code is written, but serde does.
The sorts of things in a FieldsCursor that can be expected, but owned.
Whether a reference is a fat or thin pointer.
Builtin scalar rust types (u8, char, bool, etc)
A primitive Rust value that can occur in an attribute.
Trait for types which can ponder at runtime and produce a description of themselves.
A type with a
A (often owned) ReflectedType which was not generated at compile-time.
A (usually borrowed) ReflectedType