2个版本
使用旧Rust 2015
0.0.1 | 2021年12月31日 |
---|---|
0.0.0 | 2019年5月29日 |
#5 in #编码器
在 2 个crate中使用
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)
}
}
依赖项
约2MB
约46K SLoC