7 个版本 (稳定版)
2.0.0 | 2019年2月25日 |
---|---|
1.3.0 | 2019年2月23日 |
0.1.0 | 2019年2月18日 |
#794 in 命令行界面
46KB
178 行
Arg Soup
Arg soup 是一个超级简单的 Rust 命令行参数解析器。
它遵循非常简单的“动作参数”和“标志参数”原则
动作参数简单来说就是引发程序执行某些操作的参数。例如:如果有人用 “--help” 运行你的程序,你可能会想要打印出一些信息。你可以通过动作参数来实现这一点。
快速使用
将 arg-soup = "*"
添加到你的 Cargo.toml
文件的依赖部分。
为什么使用 arg-soup?
arg-soup 非常简单和轻量。所有功能都可以通过引入一个单独的结构体(Parser
)到作用域中,然后使用其提供的方法来访问。所有功能都是直观且非常快速,这意味着你可以在几分钟内熟悉每个功能!
此外,arg-soup 正在不断地更新和改进。并且,新功能通常会根据请求添加!
动作参数的使用示例
use arg_soup::Parser;
use std::env;
fn main() {
// Collect all of the arguments from the environment
let args: Vec<String> = env::args().collect();
// Create a new parser with these arguments
let mut parser = Parser::new(args);
// Add an action arg and associate it with an action
parser.add_action("--help", Box::new(|| println!("This is an example of my crate")));
parser.execute_actions();
}
使用上述代码,当程序以 “--help” 运行时,println!("This is an example of my crate")
将被执行。
标志参数同样简单。它们从命令行收集一些值。例如,如果你想获取某个文件的路径,你可以通过运行程序并使用标志参数 “-o file.txt” 来实现这一点。
标志参数的使用示例
use arg_soup::Parser;
use std::env;
fn main() {
// Collect all of the arguments from the environment
let args: Vec<String> = env::args().collect();
// Create a new parser with these arguments
let mut parser = Parser::new(args);
// Create a flag arg and have it collect values
parser.add_flag("-o");
let flags = parser.collect_flags();
println!("{:?}", flags);
}
上述代码将返回一个映射到值的哈希表。
当然,可以根据需要将它们组合起来使用
use arg_soup::Parser;
use std::env;
fn main() {
let args: Vec<String> = env::args().collect();
let mut parser = Parser::new(args);
parser.add_action("--help", Box::new(|| println!("Some text")));
parser.add_action("--cats", Box::new(|| println!("Meow")));
parser.add_flag("-o");
parser.add_flag("-z");
// `actions` will hold the name of all executed arguments
let actions = parser.execute_actions();
let flags = parser.collect_flags();
println!("{:?}", flags);
}
其他方法
// Will return true if argument is present and false if not
let b = parser.get_bool("--test");
// Will return Some(&str) if it's value is present, and None if not
let v = parser.get_val("-o");
待办事项
实现 CustomAction
特征
就是这样!你上面看到的所有功能都是你可以使用的功能。这个 '库' 非常微小,旨在使你的时间变得轻松一些。
运行示例文件中的代码时的一些示例输出: