2014-08-29 13 views
19

Ich möchte schreiben dieseWie geschweiften Klammern in einem Format-String in Rust

write!(f, "{ hash:{}, subject: {} }", self.hash, self.subject) 

Aber da geschweiften Klammern haben eine besondere Bedeutung für die Formatierung ist es klar, zu entkommen, dass ich nicht die äußeren geschweiften Klammern so platzieren können, ohne entkommt. Also habe ich versucht, ihnen zu entkommen.

write!(f, "\{ hash:{}, subject: {} \}", self.hash, self.subject) 

Rust mag das auch nicht. Dann lese ich das:

Die Literalzeichen {,} oder # können in einer Zeichenfolge enthalten sein, indem Sie ihnen das Zeichen \ voranstellen. Da \ in Rust-Strings bereits ein Escape-Zeichen ist, sieht ein String-Literal mit diesem Escape wie "\ {" aus. So

Ich versuchte

write!(f, "\\{ hash:{}, subject: {} \\}", self.hash, self.subject) 

Aber das ist auch nicht funktioniert. :-(

+1

Was meinen Sie mit "nicht arbeiten"? Ist es ein Laufzeitfehler (d. H. Eine Ausgabe, die Sie nicht erwarten) oder ein Kompilierzeitfehler? – huon

+0

Es war ein Kompilierzeitfehler. Aber es ist mit der Antwort von Nos gelöst. – Christoph

+0

Oh, bitte in Zukunft bitte Compiler-Ausgang, und vorzugsweise die Version. Dies ist besonders wichtig für Rust, da sich der Compiler dramatisch verändern kann; was hier der Fall ist, das Verhalten auf Master (was ich denke, ist die Dokumente, die Sie gelesen haben), unterscheidet sich von 0,11. – huon

Antwort

30

Sie könnten einige veraltet docs (zB für Rost 0,9)

Die current way für die Formatierung von Strings als Rost liest 0,11 zu entkommen ist {} und mit einem anderen {oder}

write!(f, "{{ hash:{}, subject: {} }}", self.hash, self.subject) 

die Literal-Zeichen {und} können in einem String von eingeschlossen werden, um sie mit dem gleichen Zeichen vorangeht. Zum Beispiel kann das {Zeichen wird entkommen mit {{und} Zeichen werden entkommen mit}}.

+0

Danke. Ich finde es wirklich scheiße, Dinge in Dokumentationen zu finden ;-) – Christoph

+0

Andersherum: mit 0.11 und dem Lesen der Master-Dokumente. – huon

+0

@Christoph die Doc-URLs sollten '.../0.11/...' nicht '.../master/...' sein. (Oder erwägen [upgrade auf eine nächtliche] (http://doc.rust-lang.org/guide.html#installing-rust).) – huon

Verwandte Themen