3个不稳定版本
0.2.1 | 2023年3月23日 |
---|---|
0.2.0 | 2023年3月11日 |
0.1.6 | 2023年2月5日 |
0.1.4 |
|
#1002 在 命令行界面 中
28KB
666 行
migparser
这个Crate实现了一个非常简单的参数解析器,灵感来自Python。它允许添加不同类型的参数(int、uint、bool、string、float),并使用不同的选项(必需的、存储为true、存储为false等)来定制行为。
示例
use migparser::{ArgumentOption, ArgumentParser, DataType, ListType};
fn main() -> Result<(), String> {
let mut parser = ArgumentParser::new();
/* The type of argument (flag, positional, ...) is identified
by the name of the argument and data type.
*/
parser.add_argument("positionalarg", None, DataType::String, None, None)?;
parser.add_argument(
"--necessaryarg",
Some(vec!["-na".to_owned()]),
DataType::Int,
Some(vec![ArgumentOption::Necessary]),
None,
)?;
parser.add_argument(
"--optionalarg",
Some(vec!["-oa".to_owned()]),
DataType::Float,
None,
None,
)?;
parser.add_argument(
"--flagarg",
Some(vec!["-f".to_owned()]),
DataType::Bool,
Some(vec![ArgumentOption::StoreTrue]), /* StoreTrue or StoreFalse for flag */
None,
)?;
parser.add_argument(
"--listarg",
Some(vec!["-la".to_owned()]),
DataType::List(ListType::Int),
Some(vec![ArgumentOption::NArgs(4)]), /* StoreTrue or StoreFalse for flag */
None,
)?;
parser.print_data();
parser.parse_arguments();
parser.print_data();
parser2.parse_arguments_from_text("miguel -na 1 -f 1 -oa 2.3 -la 12 34 78 23".to_owned());
parser2.print_data();
}
运行它
cargo run miguel -na 1 -f 1 -oa 2.3
依赖项
~1.5MB
~36K SLoC