konst/macros/
declare_generic_const.rs

1macro_rules! declare_generic_const {
2    (
3        $(
4            $(#[$meta:meta])*
5            for[$($gen_param:tt)*]
6            $vis:vis const $name:ident [$($lt:lifetime,)* $($ty:ident),* $(; $($const:ident),*)? ]
7            :$ret:ty = $value:expr;
8        )*
9    ) => {
10        $(
11            $(#[$meta])*
12            #[allow(non_camel_case_types)]
13            $vis struct $name<$($gen_param)*>(
14                core::marker::PhantomData<(
15                    $( core::marker::PhantomData<&$lt ()>, )*
16                    $( core::marker::PhantomData<$ty>, )*
17                )>
18            );
19
20            impl<$($gen_param)*> $name<$($lt,)* $($ty,)* $($($const,)*)? > {
21                /// The value that this constructs.
22                $vis const V: $ret = $value;
23            }
24        )*
25    };
26}