Skip to main content

define_static

Macro define_static 

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