【Rust】テキストファイルに「{」「}」を書き出す方法

2022/03/15に公開
2

Rustでテキストファイルの書き出しプログラムを組んでいるとき
「{」「}」の書き出しにかなりの時間を費やしてしまったので、
備忘録として残します。

どんな手段を使ってみたか?

以下ダメだった方法です。

1.エスケープシーケンスを使ってみた
C#などでは「"」の書き出しにエスケープシーケンスを使えば
書き出しができたので、
そのノリで行けないかやってみましたが、
この方法ではエラーが出てダメでした。

write!(file , "\{ ... \}");

2.raw stringを使ってみた
何とか書き出したいのでいろいろ調べていると
raw stringという方法を見つけました。
「それええやんけ!」と思ったのですが、
「{」「}」をプレースホルダーとしても使用したかったので、
この方法も断念しました。

write!(file, r"{ ... }");
  1. ASCII符号やUnicode符号を使ってみた
    可読性が悪くなるのでやりたくはないのですが、
    背に腹は代えられないので
    ASCII符号やUnicode符号を使う方法も試してみましたが、
    こちらもダメでした。
// ASCII
write!(file, "\x7b ... \x7d");

// Unicode
write!(file, "\u{007B} ... \u{007D}");

最終的に使った手段

Unicode符号を変数にしてしまい、
それをプレースホルダーで使うという力業で解決しました。
可読性の問題は解決できていませんが、
書き出せたのでとりあえずはよし。

もしかしたらもっといい方法があるかもしれないですが……。

let u7b = "\u{007B}";
let u7d = "\u{007D}";

write!(file, "{} ... {}", u7b, u7d);

2022/3/16 追記
コメントで以下の方法を教えていただきました。
こんな簡単な方法があったなんて……。
(しかも公式ドキュメントにある)
自分の調べる能力をもっと鍛えようと思いました……。

write!(file, "{{ ... }}");

Discussion