4 个版本
0.2.2 | 2021 年 8 月 28 日 |
---|---|
0.2.1 | 2021 年 8 月 28 日 |
0.1.6 | 2021 年 8 月 11 日 |
#890 在 命令行界面
19KB
285 代码行
Rusterm
快速且简单的控制台库。
这提供了一套基本的最小框架,用于在应用程序中创建基本的命令解释器。
语法
<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