Expand description
§init_static
A Rust library for explicit static initialization.
§Overview
init_static provides a macro similar to lazy_static, but with explicit initialization control. This means you decide when your statics are initialized, rather than having them lazily
evaluate on first use.
Unlike lazy_static, init_static uses std::sync::OnceLock internally and does not initialize your static values automatically. Instead, it gathers your initialization functions at compile-time using
linkme, and provides a function to run them all at once early in your program (for example, inside main()).
§Compare to lazy_static
| Feature | lazy_static | init_static |
|---|---|---|
| Initialization | Implicit (on first use) | Explicit (init_static() call) |
Result support | Not supported | Supported |
| Async support | Not supported | Supported |
| Early failure | No (fail at runtime) | Yes (optional, before app starts) |
§Installation
Add this to your Cargo.toml:
[dependencies]
init_static = { version = "0.5" }§Example
use init_static::init_static;
init_static! {
static VALUE: u32 = "42".parse()?;
}
#[tokio::main]
async fn main() {
init_static().await.unwrap();
println!("{}", *VALUE);
}Macros§
- Init
Static - Creates a new uninitialized
InitStatic<T>instance with source location metadata. - Symbol
- Creates a
Symbolreference capturing the current source location for the given identifier. - init_
static - Macro to declare statically stored values with explicit initialization. Similar to
lazy_static!, but initialization is not automatic.
Structs§
- Init
Static - A wrapper around
OnceLockproviding safe initialization andDerefsupport to mimic the ergonomics oflazy_static!. - Symbol
- Represents the source location and identity of a static variable declared via
init_static!.
Enums§
- Init
Error - Error type returned by
init_static()when initialization fails.
Functions§
- init_
static - Runs initialization for all statics declared with
init_static!. - is_
initialized - Returns whether
init_static()has already been called. - set_
debug - Enables or disables debug output during initialization.