Wie würde ich einen String erstellen und verwenden, um Hashmap in Rust zu zeichnen?

8

Wie würde ich idiomatisch eine Zeichenkette erstellen, um hashmap im Rost zu stringieren. Das Folgende funktioniert, aber ist es der richtige Weg? Gibt es eine andere Art von String, den ich verwenden sollte?

%Vor%     
Drew LeSueur 12.10.2014, 09:32
quelle

1 Antwort

10

Angenommen, Sie möchten die Flexibilität von String , HashMap<String, String> ist richtig. Die andere Wahl ist &str , aber das bedeutet erhebliche Einschränkungen für die Verwendung von HashMap / wo es weitergegeben werden kann; aber wenn es funktioniert, ist es effizienter, einen oder beide Parameter in &str zu ändern. Diese Auswahl sollte von der Art der benötigten Besitz-Semantik diktiert werden und wie dynamisch die Zeichenfolgen sind, siehe diese Antwort und < a href="http://doc.rust-lang.org/master/guide-strings.html"> die Zeichenfolgen für mehr.

Übrigens kann die Suche nach HashMap<String, ...> mit String teuer sein: Wenn Sie noch keine haben, müssen Sie eine neue String zuweisen. Wir haben eine Arbeit in Form von find_equiv , mit dem Sie ein String-Literal (und allgemeiner% &str ) übergeben können, ohne ein neues String zuzuordnen:

%Vor%

laufstall (Ich habe den Option im Rückgabewert belassen, man könnte .unwrap() aufrufen oder einen fehlenden Schlüssel richtig behandeln).

Eine andere etwas andere Option (in einigen Fällen allgemeiner, in anderen weniger) ist die std::string::as_string Funktion, die es ermöglicht, die Daten in &str so anzuzeigen, als wäre es ein &String , ohne zuzuordnen (als Der Name suggeriert ). Sie gibt ein Objekt zurück, das auf eine String dereferenziert werden kann, z. B.

%Vor%

Laufstall

(Es gibt eine ähnliche std::vec::as_vec .)

    
huon 12.10.2014, 11:51
quelle

Tags und Links