2 个版本
0.1.1 | 2022 年 8 月 12 日 |
---|---|
0.1.0 | 2022 年 8 月 9 日 |
#1132 in 编程语言
7KB
54 行
生成 molt 参数解析器。
用法
use molt_argparse::molt_argparse;
#[molt_argparse("{netlist} port_pin_list -period -name -comment:_ignored_comment -add")]
fn sdc_create_clock(
netlist: &mut NetlistDatabase,
port_pin_list: Vec<i32>, period: f32, name: String, _ignored_comment: Option<String>, add: bool
) -> i32 {
port_pin_list.len() as i32
}
提示
- 括号内的参数表示要解析的上下文:
{netlist}
. 只能有一个此类声明,并且它必须是声明中的第一个(但不必在函数参数列表中)。 - 标识符表示相应的函数参数:
port_pin_list
,按它们出现的顺序。 - 以破折号开始的表示键值参数
-period
,可以重命名它:-comment:_ignored_comment
. 如果值类型是布尔型,则它成为有无标志,后面不跟值。 - 所有类型都必须与 molt 的 Value 解析/反解析机制兼容。浮点型、整型和布尔型通过相应的
molt::as_*
处理,所有其他类型通过molt::as_other
处理。Vec<xx>
类型会像MoltList
一样自动解析。 - 如果函数参数中任何项声明为
Option<SomeType>
,则它将成为可选的。如果不这样,则默认为必需。 - 返回值定义可以是任何普通类型或向量类型,也可以是
Option<>
类型,其中 None 表示错误。目前尚无法指定错误状态 -- 建议使用某种 last_error 机制。
依赖项
~3MB
~59K SLoC