¿Cómo creo un Rust HashMap donde el valor puede ser de varios tipos?

Quiero hacer un objeto JSON que incluya varios tipos. Aquí está la estructura:

{
    "key1": "value",
    "key2": ["val", "val", "val"]
    "key3": { "keyX": 12 }
}

¿Cómo puedo hacer unHashMap que acepta todos estos tipos?

Estoy intentando esto:

let item = HashMap::new();
item.insert("key1", someString); //type is &str
item.insert("key2", someVecOfStrings); //type is Vec<String>
item.insert("key3", someOtherHashMap); //Type is HashMap<&str, u32>

let response = json::encode(&item).unwrap();

Sé que el mapa hash no tiene suficiente información de tipo, pero no estoy seguro de cómo puedo hacerlo funcionar. He intentado establecer un tipo explícito enitem que eraHashMap<&str, Encodable> pero entonces es solo otro error. ¿Cuál es la forma correcta de hacer esto?

Respuestas a la pregunta(2)

Su respuesta a la pregunta