I have a use case that's similar to lazy_static but that cannot be solved nicely right now.
If the default initializer to a lazy_static variable is something that wants arguments at initialization-time, or is something that can fail, then currently the usage is very awkward. Of course it's possible that I'm missing something obvious, I'm very new to Rust still, so apologies in advance if that's the case.
You may well consider this out of scope for this project (wouldn't really be "lazy"), but I wanted to ask before I contemplate if it's worth forking the project.
Basically, what I want would look something like this:
lazy_static! {
pub static ref QUOTES: QuoteLibrary;
}
fn main() {
let filename = "quotes.yaml";
match QuoteLibrary::load_file(filename) {
// ^^^^^^^^
// allows me to provide arguments to the initializer function
Ok(quotes) => lazy_static::initialize("ES, quotes); // assigned here
Err(err) => // allows reporting initialization failures nicely
}
}
The semantics would be:
Any access to QUOTES before it's initialized would panic.
Attempting to set the value multiple times might possibly panic too?
I have a use case that's similar to
lazy_static
but that cannot be solved nicely right now.If the default initializer to a
lazy_static
variable is something that wants arguments at initialization-time, or is something that can fail, then currently the usage is very awkward. Of course it's possible that I'm missing something obvious, I'm very new to Rust still, so apologies in advance if that's the case.You may well consider this out of scope for this project (wouldn't really be "lazy"), but I wanted to ask before I contemplate if it's worth forking the project.
Basically, what I want would look something like this:
The semantics would be:
QUOTES
before it's initialized would panic.This saves me from writing:
and also saves
.lock().unwrap()
calls every time I want to use theQUOTES
value.For context, this is what I initially wrote, when attempting to use the current
lazy_static
: