macro_rules! write_codec_enum {
($(#[doc = $codec_doc:expr])* codec $codec_name:ident {$(
$(#[doc = $var_doc:expr])* $var_name:ident($var_id:literal) {$(
$(#[doc = $type_doc:expr])* $type_name:ident.$type_idx:literal: $type_ty:ty,
)*},
)*}) => { ... };
}
Expand description
DSL-style macro for generating a serialization protocol message enum.
DSL:
ⓘ
/// [codec doc here]
codec $codec_name {
/// [var doc here]
$var_name($var_id) {
/// [type doc here]
$type_name.$type_idx: $type_ty,
},
}
- $codec_name - camel-case codec enum name
- $var_name - camel-case variant/struct name
- $var_id - protocol variant identifier byte (u8) literal
- $type_name - snake-case type name
- $type_idx - zero-index type index in message array (usize)
- $type_ty - type rust type
E.G.:
ⓘ
/// My codec is awesome.
codec MyCodec {
/// My codec has only one variant.
MyVariant(0x00) {
/// My variant has only one type
my_type.0: String,
},
}