#console #command #cli #terminal #command-line

rusterm

为 Rust 项目提供简单、快速的命令行解释器库

4 个版本

0.2.2 2021 年 8 月 28 日
0.2.1 2021 年 8 月 28 日
0.1.6 2021 年 8 月 11 日

#890命令行界面

GPL-3.0 许可协议

19KB
285 代码行

Rusterm

docs dependency status build status

快速且简单的控制台库。

这提供了一套基本的最小框架,用于在应用程序中创建基本的命令解释器。

语法

<command> [stringargument] ["带空格的字符串参数"] [33] [4.8]

注意,33 和 4.8 是两种不同类型,整数和浮点数。

示例

use rusterm::prelude::*;

fn main() {
    let mut command_table: HashMap<String, Command>= HashMap::new();
    command_table.insert("add".to_string(), add);
    let console = Console::new(command_table, ">> ");
    console.run_repl();
}

fn add(mut args: Arguments) -> Result<(), RustermError> {
    let mut sum = 0;
    for _ in 0..args.len() {
        let arg: i32 = args.pop_arg()?.try_into()?;
        sum += arg;
    }
    println!("{}", sum);
    Ok(())
}

编写作为命令使用的函数

所有要在控制台使用的函数都必须遵循此签名:fn(mut args: brc::lex::Arguments) -> Result<(), brc::error::Error>。要在函数中使用用户输入的参数,您必须不断从 args 参数中弹出命令参数,然后将它们转换为期望的类型。以下为示例

use rusterm::prelude::*;

fn echo(mut args: Arguments) -> Result<(), RustermError> {
    let first_argument: String = args.pop_arg()?.try_into()?; // Expects a String, as per the type annotation. You can expect a f64, i32 or String.
    println!("{}", first_argument);
    Ok(())
}

依赖项

~5–17MB
~188K SLoC