Rust configでアンダースコア付きの環境変数をパースする
https://docs.rs/config/latest/config/
yamlで設定値を定義するためにconfig crateを使用している。
一部環境変数で上書きしたい場合に、yamlの改装区切りのための`_`と、環境変数の区切りのための`_`が区別できなくて困っていたが簡単に解決。
let config = Config::builder()
.add_source(Environment::with_prefix("RUST_APP").separator("__"))
.build()
seperatorのほうを二重の`__`にしておくと良い感じ。
RUST_APP__HOGE__FUGA_FUGA=xxx
というように環境変数を与えると、
hoge:
fuga_fuga: "xxx"の内容を上書きできるようになる。