static-generics 0.1.1

Zero-cost generic statics for Rust.
Documentation
use static_generics::{define_namespace, namespace::NamespaceExt};

define_namespace!(App);

struct Config {
    retries: u32,
    name: String,
}

fn config() -> &'static Config {
    App::once(|| Config {
        retries: 3,
        name: String::from("worker"),
    })
}

fn main() {
    let a = config();
    let b = App::once::<Config>(|| Config {
        retries: 99,
        name: String::from("ignored"),
    });
    assert!(std::ptr::eq(a, b));
    assert_eq!(a.retries, 3);
    assert_eq!(a.name, "worker");

    let v = static_generics::once::<Vec<u8>>(|| vec![1, 2, 3]);
    assert_eq!(v.as_slice(), &[1, 2, 3]);

    println!("retries={} name={}", a.retries, a.name);
}