2014-08-29 101 views
19

我想寫這個如何逃避格式字符串花括號拉斯特

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

但由於大括號具有特殊含義的格式很顯然,我不能把外部大括號一樣,沒有逃跑。所以我試圖逃避他們。

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

Rust並不喜歡那樣。然後我讀到:

字符字符{,}或#可能包含在字符串中,前面加上\字符。由於\已經是Rust字符串中的轉義字符,因此使用此轉義符的字符串文字看起來像「\ {」。

所以,我想

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

但是,這也不能正常工作。 :-(

+1

你是什麼意思'不工作'?它是運行時錯誤(即您不期望的輸出)還是編譯時錯誤? – huon 2014-08-29 14:04:40

+0

這是編譯時錯誤。但是,這是通過nos解決的。 – Christoph 2014-08-29 14:20:58

+0

哦,將來請包含編譯器輸出,最好是版本。這對於Rust來說尤其重要,因爲編譯器可以發生巨大的變化;在這裏就是這種情況,主人(我猜是你正在閱讀的文檔)上的行爲不同於0.11。 – huon 2014-08-29 23:55:52

回答

30

你可能會讀一些過時的文檔(如生鏽0.9)

current way格式化字符串作爲防鏽0.11是逃避{和}與其他{}或

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

的文字字符{和}可由 用相同的字符之前它們包含在一個字符串。例如,。

{字符 與{{和}字符逃脫}逃脫} 10
+0

謝謝。我真的很喜歡在文檔中查找東西;-) – Christoph 2014-08-29 14:19:43

+0

實際上另一種方式是:使用0.11並閱讀主文檔。 – huon 2014-08-29 23:57:30

+0

@Christoph文檔URL應該是'.../0.11/...'而不是'.../master/...'。 (或考慮[升級到每晚](http://doc.rust-lang.org/guide.html#installing-rust)。) – huon 2014-08-29 23:59:53