Macro kitsune_p2p_types::write_codec_enum [−][src]
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,
},
}