#read-line #cli #completion #history #mode #key #multi

交互

交互是一个为 Rust 设计的简单且轻量级的 readline 库

5 个版本

0.3.4 2021 年 1 月 17 日
0.3.3 2021 年 1 月 13 日
0.2.0 2021 年 1 月 13 日
0.1.0 2021 年 1 月 12 日

#810命令行界面

每月 48 次下载

MIT 许可协议

26KB
570

交互

Crates.io Crates.io

交互是一个为 Rust 设计的简单且轻量级的 readline 库。

特性

  • 单行编辑模式
  • 多行编辑模式
  • 键绑定
  • 历史记录
  • 自动完成

用法

在您的 Cargo.toml 中添加以下内容

[dependencies]
interaction = "0.3.4"

或者,如果您已经安装了 cargo-edit,您可以运行此命令

$ cargo add interaction

示例

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

依赖项

~120KB