⚙
【Rust】テキストファイルに「{」「}」を書き出す方法
Rustでテキストファイルの書き出しプログラムを組んでいるとき
「{」「}」の書き出しにかなりの時間を費やしてしまったので、
備忘録として残します。
どんな手段を使ってみたか?
以下ダメだった方法です。
1.エスケープシーケンスを使ってみた
C#などでは「"」の書き出しにエスケープシーケンスを使えば
書き出しができたので、
そのノリで行けないかやってみましたが、
この方法ではエラーが出てダメでした。
write!(file , "\{ ... \}");
2.raw stringを使ってみた
何とか書き出したいのでいろいろ調べていると
raw stringという方法を見つけました。
「それええやんけ!」と思ったのですが、
「{」「}」をプレースホルダーとしても使用したかったので、
この方法も断念しました。
write!(file, r"{ ... }");
- 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
{{
、}}
で書き出せると思います。そういう方法もあったんですね!
勉強になりました。ありがとうございます!