Crate interact_prompt

Source
Expand description

Interact Prompt

In high-level, to use Interact Prompt you need:

  1. Deriving of Interact over types.
  2. Registration of state
  3. Spawning or invoking the Interact prompt.

In pseudo code:

extern crate interact;

use interact::Interact;
use interact_prompt::{LocalRegistry, SendRegistry, Settings};

#[derive(Interact)]
struct YourType {
    // ...
}

// ...

fn in_each_thread(rc: Rc<SomeState>) {
    // ... You would have some code to register your 'Rc's.
    LocalRegistry::insert("rc_state", Box::new(rc));
    // ...
}

fn spawn_interact(arc: Arc<SomeOtherState>) {
    // On the global context you can register any object that is `Send`
    // and implements `Access` via #[derive(Interact)], this means `Arc` types,
    SendRegistry::insert("arc_state", Box::new(arc));

    interact_prompt::spawn(Settings::default(), ());
}

NOTE: Currently only the SendRegistry is supported for the background spawn variant of Interact. Supporting LocalRegistry is planned for the future.

Re-exports§

pub use crate::registry::LocalRegistry;
pub use crate::registry::SendRegistry;

Modules§

registry
Interact Prompt registry for accessible state.

Structs§

Settings

Enums§

Interaction
PromptError
Response

Traits§

Handler
This trait defines an optional handler for prompt commands. This allows to override the behavior of the handler for ().

Functions§

direct
Use the current thread for an interactive Interact prompt.
spawn
Spawn Interact in a new thread.