Release 0.2.2
2 files changed
tree: 247867e98927dad4c443da1f15e6584a95aa24db
  1. .gitignore
  2. .travis.yml
  3. Cargo.toml
  4. LICENSE
  5. README.md
  6. deploy-docs.sh
  7. examples/
  8. src/
README.md

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

Features

ToDo

  • Kill ring (Killing Commands)
  • Word commands
  • Multi line mode
  • expose an API callable from C