An open API service indexing awesome lists of open source software.

https://github.com/odd12258053/interaction

Interaction is a minimal and a simple readline library for Rust.
https://github.com/odd12258053/interaction

cli crates multi readline readline-library rust

Last synced: 8 months ago
JSON representation

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

Awesome Lists containing this project

README

          

# Interaction
![Crates.io](https://img.shields.io/crates/l/interaction)
[![Crates.io](https://img.shields.io/crates/v/interaction.svg)](https://crates.io/crates/interaction)

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`:

```toml
[dependencies]
interaction = "0.3.4"
```

Or, if you installed [cargo-edit](https://github.com/killercup/cargo-edit), you run this command:

```sh
$ cargo add interaction
```

# Example

```rust
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;
}
}
}
}
```