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:
[]
= { = "0.5" }
Example
use init_static;
init_static!
async