hiopt
getopt/getopt_long for rust.
提供类似libc::getopt的功能.
- 单ascii字符的选项:
-a -b或者-ab,-c value或者-cvalue - 长字符串选项:
--long=value或者--long value - 选项结束标志:
-- - 不限制非选项的输入顺序:
-c value arg或者arg -c value
分别提供遍历选项和非选项的函数接口.
Example
use ;
let opts = options!; // ':' means the option requires an argument. 表示选项需要输入参数
let args = ;
let mut iter = opts.opt_iter;
assert_eq!; // opts[0].name() = "a"
assert_eq!;
assert_eq!; // opts[1].name() = "b"
assert_eq!; // opts[2].name() = "long"
assert_eq!;
assert_eq!; // opts[1].name() = "b"
assert_eq!;
let mut iter = opts.noopt_iter;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
可以结合hictor crate获取应用程序的命令行输入进行分析处理
Example
let opts = options!;
let args = unsafe ;
for opt in opts.opt_iter
for arg in opts.noopt_iter
0.1.4版本区分了options!和args数组引用和数组元素的引用,这样可以将命令行输入参数('static)保存下来.
0.1.5版本区分了options!和args元素的引用,options!元素的生命周期可能比args元素生命周期更短.
Example
0.1.6 有两个变更:
- options!返回的类型也由
Options<'_, N>变更为Options<'_>, 内部由数组(array)变更为切片(slice), 方便引用其类型. - 初始化的函数都变更为const函数,可用于定义静态变量或者常量.
Example
static OPTS: Options = options!;
parse_opts;