#枚举 #定义 #编码器 #指令 #中间表示 #编译器 #

enum_coder

枚举编码宏。为生成指令列表、编译器等中间表示提供了一种语法糖。

2个版本

使用旧Rust 2015

0.0.1 2021年12月31日
0.0.0 2019年5月29日

#5 in #编码器


2 个crate中使用

MIT/Apache

14KB
271

enum_coder

枚举编码宏。为生成指令列表、编译器等中间表示提供了一种语法糖。

宏的输入由一个枚举定义和后续的函数定义组成。

属性 generate_list 生成枚举值的生成器。函数签名是 fn f() -> Vec<T>.

属性 missing_field 标记计算字段默认值的计算。或者,该属性也可以写成 missing_field(args, ...)。此时,函数签名是 fn f(args, field_name: &str).

更多信息请参见 examples

enum_coder! {
    enum Instruction {
        Push(String),
        Concat(usize),
        ConcatSeparated(usize, String),
        Dup,
        Test,
        ConcatRef {
            ref_a: usize,
            ref_b: usize,
        },
    }

    #[generate_list]
    fn make_instructions() -> Vec<Instruction> {
        Push("hello".to_string());
        Push("world!".to_string());
        // ConcatSeparated(2, ", ".to_string());
        // or
        ConcatRef {
            ref_a: 0,
            ref_b: 1,
        };
        for _ in 0..10 {
            Dup()
        }
        Test();
        Concat(10 + 1)
    }
}

文档在此处可用: https://docs.rs/enum_coder/latest/enum_coder/

依赖项

约2MB
约46K SLoC