9 个不稳定版本
新 0.5.1 | 2024 年 8 月 22 日 |
---|---|
0.5.0 | 2024 年 4 月 26 日 |
0.4.0 | 2023 年 11 月 16 日 |
0.3.2 | 2019 年 8 月 21 日 |
0.1.1 | 2018 年 5 月 19 日 |
48 在 命令行界面 中
每月 2,563 次下载
在 imxrt-hal 中使用
42KB
788 行
Menu
简介
一个简单的 Rust 命令行菜单系统。适用于嵌入式系统,也适用于您的命令行。
注意:此 crate 只在 &str
中工作 - 没有堆分配,也没有自动转换为整数、布尔值等。
user@host: ~/menu $ cargo run --example simple
Compiling menu v0.5.0 (file:///home/user/menu)
Finished dev [unoptimized + debuginfo] target(s) in 0.84 secs
Running `target/debug/examples/simple`
In enter_root()
> help
AVAILABLE ITEMS:
foo <a> [ <b> ] [ OPTIONS... ]
bar
sub
help [ <command> ]
> help foo
SUMMARY:
foo <a> [ <b> ] [ --verbose ] [ --level=INT ]
PARAMETERS:
<a>
This is the help text for 'a'
<b>
No help text found
--verbose
No help text found
--level=INT
Set the level of the dangle
DESCRIPTION:
Makes a foo appear.
This is some extensive help text.
It contains multiple paragraphs and should be preceeded by the parameter list.
> foo --level=3 --verbose 1 2
In select_foo. Args = ["--level=3", "--verbose", "1", "2"]
a = Ok(Some("1"))
b = Ok(Some("2"))
verbose = Ok(Some(""))
level = Ok(Some("3"))
no_such_arg = Err(())
> foo
Error: Insufficient arguments given!
> foo 1 2 3 3
Error: Too many arguments given
> sub
/sub> help
AVAILABLE ITEMS:
baz
quux
exit
help [ <command> ]
> exit
> help
AVAILABLE ITEMS:
foo <a> [ <b> ] [ OPTIONS... ]
bar
sub
help [ <command> ]
> ^C
user@host: ~/menu $
使用方法
请参阅 examples/simple.rs
以获取在 Linux 或 Windows 上运行的示例。以下是该示例中的菜单定义
const ROOT_MENU: Menu<Output> = Menu {
label: "root",
items: &[
&Item {
item_type: ItemType::Callback {
function: select_foo,
parameters: &[
Parameter::Mandatory {
parameter_name: "a",
help: Some("This is the help text for 'a'"),
},
Parameter::Optional {
parameter_name: "b",
help: None,
},
Parameter::Named {
parameter_name: "verbose",
help: None,
},
Parameter::NamedValue {
parameter_name: "level",
argument_name: "INT",
help: Some("Set the level of the dangle"),
},
],
},
command: "foo",
help: Some(
"Makes a foo appear.
This is some extensive help text.
It contains multiple paragraphs and should be preceeded by the parameter list.
",
),
},
&Item {
item_type: ItemType::Callback {
function: select_bar,
parameters: &[],
},
command: "bar",
help: Some("fandoggles a bar"),
},
&Item {
item_type: ItemType::Menu(&Menu {
label: "sub",
items: &[
&Item {
item_type: ItemType::Callback {
function: select_baz,
parameters: &[],
},
command: "baz",
help: Some("thingamobob a baz"),
},
&Item {
item_type: ItemType::Callback {
function: select_quux,
parameters: &[],
},
command: "quux",
help: Some("maximum quux"),
},
],
entry: Some(enter_sub),
exit: Some(exit_sub),
}),
command: "sub",
help: Some("enter sub-menu"),
},
],
entry: Some(enter_root),
exit: Some(exit_root),
};
变更日志
请参阅 CHANGELOG.md
。
许可证
此存储库的内容根据 MIT OR Apache 2.0 许可证双授权。这意味着您在重新使用此代码时可以选择 MIT 许可证或 Apache 2.0 许可证。有关每个具体许可证的更多信息,请参阅 LICENSE-MIT
或 LICENSE-APACHE
。我们的 Apache 2.0 声明可以在 NOTICE
中找到。
除非您明确声明,否则根据 Apache-2.0 许可证定义的任何有意提交以包含在作品中的贡献,均应按上述方式双授权,无需任何额外条款或条件。