macro_rules! define_static {
($vis:vis fn $name:ident () -> *mut $ty:ty ; in $ns:ty) => { ... };
($vis:vis fn $name:ident <$($gen:ident),+ $(,)?> () -> *mut $ty:ty ; in $ns:ty) => { ... };
($vis:vis fn $name:ident <const $N:ident : usize $(,)?> () -> *mut $ty:ty ; in $ns:ty) => { ... };
($vis:vis fn $name:ident <$gen:ident, const $N:ident : usize $(,)?> () -> *mut $ty:ty ; in $ns:ty) => { ... };
($vis:vis fn $name:ident () -> $ty:ty ; in $ns:ty) => { ... };
($vis:vis fn $name:ident <$($gen:ident),+ $(,)?> () -> $ty:ty ; in $ns:ty) => { ... };
($vis:vis fn $name:ident <const $N:ident : usize $(,)?> () -> $ty:ty ; in $ns:ty) => { ... };
($vis:vis fn $name:ident <$gen:ident, const $N:ident : usize $(,)?> () -> $ty:ty ; in $ns:ty) => { ... };
}Expand description
Declare a typed accessor function for one generic static.
use static_generics::{define_namespace, define_static};
use core::sync::atomic::AtomicU64;
define_namespace!(MyNs);
define_static!(pub fn counter<T>() -> AtomicU64; in MyNs);
counter::<u32>().fetch_add(1, core::sync::atomic::Ordering::Relaxed);