RustyLine
Readline implementation in Rust that is based on Antirez' Linenoise
Build
This project uses Cargo and Rust Nightly
cargo build --release
Example
extern crate rustyline;
use rustyline::error::ReadlineError;
use rustyline::Editor;
fn main() {
let mut rl = Editor::new();
if let Err(_) = rl.load_history("history.txt") {
println!("No previous history.");
}
loop {
let readline = rl.readline(">> ");
match readline {
Ok(line) => {
rl.add_history_entry(&line);
println!("Line: {}", line);
},
Err(ReadlineError::Interrupted) => {
println!("CTRL-C");
break
},
Err(ReadlineError::Eof) => {
println!("CTRL-D");
break
},
Err(err) => {
println!("Error: {:?}", err);
break
}
}
}
rl.save_history("history.txt").unwrap();
}
crates.io
You can use this package in your project by adding the following
to your Cargo.toml
:
[dependencies]
rustyline = "0.2.0"
Features
- Unicode (UTF-8) (linenoise supports only ASCII)
- Word completion (linenoise supports only line completion)
- Filename completion
- History search (Searching for Commands in the History
ToDo
- Kill ring (Killing Commands)
- Word commands
- Multi line mode
- expose an API callable from C