diff options
author | HampusM <hampus@hampusmat.com> | 2025-10-15 18:40:19 +0200 |
---|---|---|
committer | HampusM <hampus@hampusmat.com> | 2025-10-15 19:13:21 +0200 |
commit | 7f3072ed7e016dff359439d7580403e36ad6b325 (patch) | |
tree | 706ae1a2e019c577229f1bdc7d1d22cbf1ca9086 /ecs/src/util.rs | |
parent | b3bc691aedb46519e36db8e9eba0e37ac3cefb4a (diff) |
Diffstat (limited to 'ecs/src/util.rs')
-rw-r--r-- | ecs/src/util.rs | 33 |
1 files changed, 27 insertions, 6 deletions
diff --git a/ecs/src/util.rs b/ecs/src/util.rs index c18fd49..27e9748 100644 --- a/ecs/src/util.rs +++ b/ecs/src/util.rs @@ -303,8 +303,15 @@ pub(crate) use gen_mask_64; macro_rules! impl_multiple { ( $type: ident, - ($(impl$(<$($generic: tt$(: $bound: ident)?),*>)? _<$($type_param: ty),*>),*) - ($($ty_param_matcher: ident),*) => { + ($( + impl$(<$($generic: tt$(: $bound: ident)?),*>)? + _<$($lt_param: lifetime),*><$($type_param: ty),*> + $(($($extra_cb_arg: expr),*))? + ),*) + cb=( + type_params=($($ty_param_matcher: ident),*) + $(, $($extra_matcher: ident),+)? + ) => { $($item_tt: tt)* } ) => { @@ -313,13 +320,17 @@ macro_rules! impl_multiple { @(make_gen_item_macro) _gen_multiple_impl_item, ($($ty_param_matcher),*), + ($($($extra_matcher),+)?), ($($item_tt)*) ); $( - impl $(<$($generic$(: $bound)?,)*>)? $type<$($type_param),*> + impl $(<$($generic$(: $bound)?,)*>)? $type<$($lt_param,)* $($type_param),*> { - _gen_multiple_impl_item!($($type_param),*); + _gen_multiple_impl_item!( + type_params=($($type_param),*), + $($($extra_cb_arg),*)? + ); } )* }; @@ -329,11 +340,16 @@ macro_rules! impl_multiple { @(make_gen_item_macro) $name: ident, ($($ty_param_matcher: ident),*), + ($($extra_matcher: ident),*), ($($transcriber: tt)*) ) => { $crate::util::impl_multiple!( @(make_gen_item_macro) - ($), $name, ($($ty_param_matcher),*), ($($transcriber)*) + ($), + $name, + ($($ty_param_matcher),*), + ($($extra_matcher),*), + ($($transcriber)*) ); }; @@ -342,11 +358,16 @@ macro_rules! impl_multiple { ($dollar: tt), $name: ident, ($($ty_param_matcher: ident),*), + ($($extra_matcher: ident),*), ($($transcriber: tt)*) ) => { $crate::util::impl_multiple!( @(make_gen_item_macro) - $name, ($($dollar$ty_param_matcher: ty),*) => { + $name, + ( + type_params=($($dollar$ty_param_matcher: ty),*), + $($dollar$extra_matcher: expr),* + ) => { $($transcriber)* } ); |