Rustの練習でenvsubstを車輪再発明
Rustの練習がしたかった。新しくプログラミング言語を学ぶときにはテンプレートエンジンを作るのが手頃な難易度で良いと誰かが言っていたので、envsubst
みたいなやつを作ろうと思った。
envsubst
はテキスト中の$FOO
のような文字列を環境変数の値に置き換えてくれるCLI。インストールも使い方も簡単なので、よく使う。
ただ、唯一の不満な点は変数名のエスケープができないこと。かわりに--variables
オプションで置き換える変数名を個別に指定することはできる。
そこで、エスケープできるenvsubst
を作ってみよう、と思った。Rustで作るので、名前は renvsubst
にする。使用感は以下のような感じ。
$ export FOO=foooo $ echo 'I like $FOO, ${FOO}, \$FOO, \${FOO}' | renvsubst I like foooo, foooo, $FOO, ${FOO}
作った。
成果物は GitHub に置いた。
感想
難しかった。まだ慣れた感じはしない。ソースコード汚いし。
なにしろ、ちょっとしたことでコンパイラに叱られる。その変数はスコープから出られないよって。関数の返り値に &str
をしようとするとだいたい怒られるし。