Wie erstelle ich eine Rust HashMap, bei der der Wert einer von mehreren Typen sein kann?

Ich möchte ein JSON-Objekt erstellen, das mehrere Typen enthält. Hier ist die Struktur:

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

Wie kann ich ein @ machHashMap was akzeptiert all diese Typen?

Ich versuche das:

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();

Ich weiß, dass die Hash-Map nicht genügend Typinformationen enthält, bin mir aber nicht sicher, wie ich sie zum Laufen bringen kann. Ich habe versucht, einen expliziten Typ für @ festzulegeitem das warHashMap<&str, Encodable> aber dann ist es nur ein weiterer Fehler. Was ist der richtige Weg, um dies zu tun?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage