![見出し画像](https://assets.st-note.com/production/uploads/images/73851375/rectangle_large_type_2_065f12e7ed16c3d521ed68de29cdcc91.png?width=1200)
Rustでマイクラのmcfunctionファイルを書き出してみた
マイクラでゲームを作ることが増えて
場合によってはたくさんのmcfunctionファイルを
作らなければならないこともあります。
それぞれ内容が違うものを作る場合は
手動で書くしかないのですが、
一部分だけ違ってほかは同じ場合は
プログラムで自動書き出しをして楽をしたいなぁと……。
過去にPythonやC#を使って作った
とあるmcfunctionを書き出すツールを、
最近話題のRustを使ってもう一度作っているとき
とある部分で引っかかって苦悩した内容です。
テキスト書き出しで「{」「}」はどうするんじゃ?
Rustでテキスト書き出しをするときは
「File」とか「OpenOption」とかを使用するのですが、
今回は「File.create」を使ってmcfunctionファイルを作成することにしました。
また、
書き出しは「write!」を使用するのですが……
この時「{」「}」はどうやって書き出せばいいんだろうかと
あれこれ悩みました。
エスケープシーケンスを使えばいいんじゃね?
C#とかでは「"」の記入にエスケープシーケンスこと
バックスラッシュを使って記入するので、
そのノリで行けないかとやってみたところ
![](https://assets.st-note.com/img/1646753201024-GTSqfvZmWB.png)
だめでした
「"」は行けるみたいです。
そこは行けるのに「{」は行けんのかい。
raw string使えばいいじゃん?
いろいろ調べているとraw string使えるよ!みたいな記事があったので
それで試してみることにしたのですが、
ここにも落とし穴が……
「{」と「}」はプレースホルダーとしても使用したいため
それを区別する方法が必要なのです。
raw stringを使用してしまうと
「{」「}」は文字列リテラルとして認識されて
プレースホルダーとしての役割がなくなってしまいます。
もしかして何か方法がある……かも?
おしえてくわしいひと……
ASCII符号とかUnicode符号とか使えばいいのでは?
さっきの記事にもありました。
ソレダ!
と思って入力したところ
![](https://assets.st-note.com/img/1646754178074-mkkGCK81Bb.png?width=1200)
だめでした
ちなみにUnicodeの方もだめでした。
なんでぇ……何がきにいらんのぉ……
最終的に……
力技でやってくれるわ!!!
Unicode符号を変数にぶち込んで
それをプレースホルダーで使うという力業でやりました。
![](https://assets.st-note.com/img/1646754605638-4k9pIao4vR.png?width=1200)
通るんかい……。
しかもちゃんと書き出せるし……。
この記事が気に入ったらサポートをしてみませんか?