json::object! [] [src]

macro_rules! object {
    (
      let decoder = $dec:ident;
      let buffer  = $buf:expr;
      $T:ident {
          $($name:ident: $modus:ident. $key:expr => $action:expr),+
      }
    ) => { ... };
    (
      let decoder = $dec:ident;
      $T:ident {
          $($name:ident: $modus:ident. $key:expr => $action:expr),+
      }
    ) => { ... };
}

Macro to support declarative decoding into struct types.

Syntax:

object! {
    'let' 'decoder' '=' decoder_var_name ';'
    'let' 'buffer'  '=' mutable_reference_to_utf8_buffer ';' // optional
    struct_type '{'
        ( field_name ':' ('req' / 'opt') '.' field_string '=>' expression ',' )+
    '}'
}

Example:

struct Point {
    x: u32,
    y: u32
}

object! {
    let decoder = d;
    Point {
        x: req. "x" => Decoder::u32,
        y: req. "y" => Decoder::u32
    }
}