>>475
そこは併用することで解決できる
まずOnceLockで変数FOOの場合
初期化は例えばこうなる

static FOO: OnceLock<String> = OnceLock::new();
let foo = std::env::var("FOO").expect("no 環境変数FOO");
FOO.set(foo).expect("FOO: 初期化済");

このOnceLockのFOOの利用はこうなり可読性の悪い欠点がある
println!("FOO: {}", FOO.get().expect("FOO: 未初期化"));

一方でLazeLockで変数BARの場合
初期化で引数を渡せない欠点を先程のFOO活用で補える

static BAR: LazyLock<String> = LazyLock::new(|| BAR初期化関数(FOO.get().expect("FOO: not initialized")));
fn BAR初期化関数(foo: &str) -> String {
format!("適当に{foo}を変換")
}

このLazyLockのBARの利用はderefでこうなり可読性が向上する
println!("BAR: {}", *BAR);