Wie erstelle ich eine HashMap literal?
Wie kann ich eine HashMap literal in Rust? In Python kann ich machen es so:
hashmap = {
'element0': {
'name': 'My New Element',
'childs': {
'child0': {
'name': 'Child For Element 0',
'childs': {
...
}
}
}
},
...
}
Und Gehen wie folgt aus:
type Node struct {
name string
childs map[string]Node
}
hashmap := map[string]Node {
"element0": Node{
"My New Element",
map[string]Node {
'child0': Node{
"Child For Element 0",
map[string]Node {}
}
}
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es nicht eine Karte literal syntax in Rust. Ich weiß nicht, die genaue Grund, aber ich erwarte, dass die Tatsache, dass es mehrere Daten-Strukturen, die handeln maplike (wie die beiden
BTreeMap
undHashMap
) würde machen es schwer sich für eine zu entscheiden.Sie können jedoch erstellen ein makro, um die Arbeit zu tun für Sie, wie gezeigt, in Warum wird dieser Rost HashMap makro nicht mehr funktionieren?. Hier ist das makro, vereinfachte Sie ein wenig, und mit genug Struktur, um es lauffaehig auf dem Spielplatz:
grabbag_macros
Kiste. Sehen Sie die Quelle hier: github.com/DanielKeep/rust-grabbag/blob/master/grabbag_macros/....DictionaryLiteral
kann verwendet werden, zu initialisieren, jeder Typ entspricht, istExpressibleByDictionaryLiteral
(auch wenn die standard-Bibliothek bietet eine solche Art,Dictionary
)Empfehle ich die maplit Kiste.
Zitat aus der Dokumentation:
Es ist ein Beispiel, wie Sie diese erreichen in der Dokumentation für
HashMap
:String
statt&str
.