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"

の内容を上書きできるようになる。

Related Articles