init_static

Crates.ioinit_static
lib.rsinit_static
version0.5.0
created_at2025-11-03 09:07:03.248962+00
updated_at2025-12-23 01:10:10.609133+00
descriptionA Rust library for explicit static initialization.
homepage
repositoryhttps://github.com/shigma/init_static
max_upload_size
id1914281
size29,620
Shigma (shigma)

documentation

https://docs.rs/init_static

README

init_static

Crates.io Documentation

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.4" }

Example

use init_static::init_static;

init_static! {
    static VALUE: u32 = "42".parse()?;
}

#[tokio::main]
async fn main() {
    init_static().await.unwrap();
    println!("{}", *VALUE);
}
Commit count: 0

cargo fmt