Interact is a framework for friendly online introspection of the running program state in an intuitive command-line interactive way.
While dynamically-typed interpreted languages offer the advantage of allowing to look at a running program state using a prompt, compiled languages often do not provide that feature. Being hard as it is to introduce interpreters into compiled languages, the Interact project aimes to provide a midway solution using stable Rust.
NOTE: Unless you are manually extending types for use under Interact, you probably don't need
most of the items that are exported in this crate. Instead, look for the
Interact introduces a series of traits, the main ones are
Deser trait. Those
crates can be custom-derived using
#[derive(Interact)], or be derived manually.
Access provides two methods that return special accessor trait object types. Please
read the documentation for the
access part of Interact.
Deser trait is a special deserializer that allows for online interactive hints at
non-ambiguous parse points.
Further relevent bits that comprise Interact are:
reflector, when provided at type it will generate a representation of it, while handling reference cycles, imposed output limitations, mutexs, and customized in-process indirections.
climber, which when given a Rust-like expression of an inner value, knows how to go from an Interact root down to a field.
Given a list of items, this provides assistance for completing them.
Climber represents the full state of evaluation of Interact expressions. It is used within the
impls of the
ImmutAccess adds function call information over
MutAccess adds function call information over
NodeTree represent a reflection of an Interact type that implemented the
A temporary binder of
Holds a root dictionary of trait objects that implement
Holds a root dictionary of
Represents a single meaningful substring part in an Interact string expression.
Wrapper for the traversal of a borrowed list of tokens.
An arbitrar between the two possible way to climb into an immutable value.
An arbitrar between the two possible way to climb into a mutable value.
The direct Reflect allows direct climber or reflector access, and meant to be used as a trait object for that purpose.
The indirect Reflect allows indirect climber or reflector access, and meant to be used as a trait object for that purpose.
A helper for the specific implementations of