Skip to content
Snippets Groups Projects
user avatar
Gwenael Treguier authored
70990f42

RustyLine

Build Status

Readline implementation in Rust that is based on Antirez' Linenoise

Documentation

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.1.0"

Features

  • Unicode (UTF-8) (linenoise supports only ASCII)
  • Word completion (linenoise supports only line completion)
  • Filename completion

ToDo