Rustにおいて、自分の定義した構造体

struct MyStruct {
  a: i32,
  b: f64,
}

をmsgpackの辞書として保存するにはどうすれば良いでしょうか?

serde_deriveを用いて以下のようにした場合、Listとして保存されてしまいます:

extern crate rmp_serde;
extern crate serde;
#[macro_use]
extern crate serde_derive;

use serde::Serialize;

#[derive(Serialize)]
struct A {
    a: i32,
    b: f64,
}

fn main() {
    let f = ::std::fs::File::create("test.msg").ok().unwrap();
    let mut buf = ::std::io::BufWriter::new(f);
    let mut enc = ::rmp_serde::Serializer::new(&mut buf);
    let val = A { a: 12, b: 1.2 };
    val.serialize(&mut enc).unwrap();
}

このtest.msgmsgpack-cliで表示すると

% msgpack-cli decode test.msg
[12,1.2]

のようにリストで保存されていることがわかります。
これを{a: 12, b: 1.2}のような辞書形式で保存するには上記のRustコードをどのように変更すればよいでしょうか?