#[derive(RustcDecodable, RustcEncodable)] enum Msg { Basic { cmd: String, id: i32 }, Positioned { cmd: String, id: i32, x: i32, y: i32 }, Speed { cmd: String, id: i32, speed: i32 }, Full { cmd: String, id: i32, x: i32, y: i32, speed: i32 } }
{ "variant": "Basic", fields: ["cmd-value", 42] } { "variant": "Positioned", fields: ["cmd-value", 42, 0, 0] } //etc ...