web-dev-qa-db-fra.com

Comment échapper aux accolades dans une chaîne de format dans Rust

Je veux écrire ceci

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

Mais comme les accolades ont une signification particulière pour le formatage, il est clair que je ne peux pas placer les accolades externes comme ça sans m'échapper. J'ai donc essayé de leur échapper.

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

Rust n'aime pas ça non plus. Alors j'ai lu ceci:

Les caractères littéraux {,} ou # peuvent être inclus dans une chaîne en les précédant du caractère \. Puisque\est déjà un caractère d'échappement dans les chaînes Rust, un littéral de chaîne utilisant cet d'échappement ressemblera à "\ {".

J'ai donc essayé

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

Mais cela ne fonctionne pas non plus. :-(

46
Christoph

Vous lisez peut-être des documents obsolètes (par exemple pour Rust 0.9)

À partir de Rust 1.0, la façon de s'échapper { et } est avec un autre { ou }

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

Les caractères littéraux { et } peut être inclus dans une chaîne en les précédant du même caractère. Par exemple, le { le caractère est échappé avec {{ et le } le caractère est échappé avec }}.

69
nos