#nom #macro #remove #boilerplate #pattern #fields #function-like

nom-fields

提供了一个类似函数的宏,用于在使用 nom 时移除常见模式中的一些样板代码。

2 个版本

0.1.1 2020 年 4 月 9 日
0.1.0 2020 年 4 月 6 日

#2680Rust 模式

每月 32 次下载
2 个 crate 中使用

MIT/Apache

4KB

Docs License

nom-fields

此 crate 提供了一个类似函数的宏,用于在使用解析框架 nom 时移除常见模式中的一些样板代码。

使用此宏,以下解析器...

nom::combinator::map(
    nom::sequence::tuple((
        some_parser,
        some_other_parser,
        a_third_parser
    )),
    |(some_field, some_other_field, a_third_field)| SomeStruct {
        some_field,
        some_other_field,
        a_third_field
    }
)(input)

...变成了这样

nom_fields::fields!(SomeStruct:
    some_field = some_parser,
    some_other_field = some_other_parser,
    a_third_field = a_third_parser
)(input)

lib.rs:

此 crate 提供了一个类似函数的宏,用于在使用解析框架 nom 时移除常见模式中的一些样板代码。

使用此宏,以下解析器...

nom::combinator::map(
    nom::sequence::tuple((
        some_parser,
        some_other_parser,
        a_third_parser
    )),
    |(some_field, some_other_field, a_third_field)| SomeStruct {
        some_field,
        some_other_field,
        a_third_field
    }
)(input)

...变成了这样

nom_fields::fields!(SomeStruct:
    some_field = some_parser,
    some_other_field = some_other_parser,
    a_third_field = a_third_parser
)(input)

无运行时依赖