Как избежать фигурных скобок в строке формата в Rust

Я хочу написать это

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

Но так как фигурные скобки имеют особое значение для форматирования, ясно, что я не могу разместить внешние фигурные фигурные скобки, не выходя из нее. Поэтому я попытался сбежать от них.

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

Русту тоже не нравится. Затем я прочитал следующее:

Литеральные символы {,} или # могут быть включены в строку, предшествуя им символом \. Так как\уже является escape-символом в строках Rust, строковый литерал, использующий этот escape, будет выглядеть как "\ {".

Итак, я попробовал

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

Но это тоже не работает.: - (

Ответы

Ответ 1

Возможно, вы читаете некоторые устаревшие документы (например, для ржавчины 0,9)

текущий путь для форматирования строк с точки зрения ржавчины 0.11 - это escape {и} с другим {или}

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

Литеральные символы {и} могут быть включены в строку посредством предшествующие им с тем же характером. Например, символ { экранируется символом {{и}} с помощью}}.