[][src]Crate refloctopus

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 Serialize and Deserialize for most of your types, instead deriveing Reflect. The reflection metadata for each type is reasonably small. Using the reflection metadata, a single Serialize/Deserialize implementation can marshall any Rust type.

Structs

Db

Home of serialize and deserialize.

EnumArm

An arm of an enum declaration, describing a variant.

Expect

Token indicating what type to expect in the field metadata.

ExpectArr

Token indicating length and type of an array to expect in the field metadata.

Field

A named or unnamed field, offset from the base of its containing type.

FieldsCursor

A cursor into the in-memory densely packed field metadata for a particular type.

FieldsStorage

An area of memory, owned or borrowed, storing the field data for a particular ReflectedType.

ReflectedType

A Rust type, of some kind, with a unique TypeId.

ShapedLocation

A location in memory with a known reflected type.

ShapedOutputLocation

A destination in memory with a known eventual type.

Enums

Attr

An #[attribute].

DataShape

The world of rust type representation, according to reflectopus.

DeclKind

We don't care much how the source code is written, but serde does.

Expectables

The sorts of things in a FieldsCursor that can be expected, but owned.

RefKind

Whether a reference is a fat or thin pointer.

RustBuiltin

Builtin scalar rust types (u8, char, bool, etc)

RustPrimitive

A primitive Rust value that can occur in an attribute.

Traits

Reflect

Trait for types which can ponder at runtime and produce a description of themselves.

StaticReflect

A type with a StaticType available.

Type Definitions

DynamicType

A (often owned) ReflectedType which was not generated at compile-time.

StaticType

A (usually borrowed) ReflectedType