| Crates.io | enum_coder |
| lib.rs | enum_coder |
| version | 0.0.1 |
| created_at | 2019-05-29 19:02:08.899432+00 |
| updated_at | 2021-12-31 08:42:14.680909+00 |
| description | Enum coder macro. A syntancic sugar for generating lists of instructions, intermediate representations for compilers etc. |
| homepage | |
| repository | https://github.com/pczarn/enum_coder/ |
| max_upload_size | |
| id | 137742 |
| size | 28,361 |
Enum coder macro. A syntancic sugar for generating lists of instructions, intermediate representations for compilers etc.
Input for the macro consists of one enum definition, followed by function definitions.
Attributes generate_list makes a generator of enum values. The function
signature is fn f() -> Vec<T>.
Attribute missing_field marks the computation of default values for fields.
Alternatively, the attribute can be written as missing_field(args, ...).
Then, function signature is fn f(args, field_name: &str).
See examples for more.
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)
}
}
Documentation is available here: https://docs.rs/enum_coder/latest/enum_coder/