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,
    },
}