This is similar to OnceCell::get_or_try_init and is very useful for fallible initialization.
OnceCell::get_or_try_init