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);
}