interaction

Crates.iointeraction
lib.rsinteraction
version0.3.4
sourcesrc
created_at2021-01-12 10:33:41.40331
updated_at2021-01-17 12:23:18.73101
descriptionInteraction is a minimal and a simple readline library for Rust.
homepagehttps://github.com/odd12258053/interaction
repositoryhttps://github.com/odd12258053/interaction
max_upload_size
id340815
size28,448
odd (odd12258053)

documentation

https://docs.rs/interaction

README

Interaction

Crates.io Crates.io

Interaction is a minimal and a simple readline library for Rust.

Features

  • Single line editing mode
  • Multi line editing mode
  • Key bindings
  • History
  • Completion

Usage

Add this in your Cargo.toml:

[dependencies]
interaction = "0.3.4"

Or, if you installed cargo-edit, you run this command:

$ cargo add interaction

Example

use interaction::InteractionBuilder;
use std::io;

fn main() {
    let history_file = "./.example_history";
    let mut inter = InteractionBuilder::new()
        .prompt_str(";;>")
        .history_limit(5)
        .completion(|_input, completions| {
            completions.push(b"foo".to_vec());
            completions.push(b"bar".to_vec());
        })
        .load_history(history_file)
        .unwrap()
        .build();
    loop {
        match inter.line() {
            Ok(input) => {
                // write any code.
            }
            Err(e) if e.kind() == io::ErrorKind::Interrupted => {
                inter.save_history(history_file).unwrap();
                break;
            }
            Err(_) => {
                break;
            }
        }
    }
}
Commit count: 9

cargo fmt