26 个版本
0.5.3 | 2024 年 2 月 28 日 |
---|---|
0.5.1 | 2023 年 10 月 30 日 |
0.4.4 | 2022 年 5 月 24 日 |
0.3.2 | 2021 年 7 月 31 日 |
0.2.6 | 2020 年 11 月 3 日 |
#246 在 Rust 模式 中
1,564 每月下载量
在 7 个 包(4 个直接使用)中使用
48KB
1.5K SLoC
generics-parse
提供在 macro_rules!
中解析泛型和 where 子句的宏。
pub trait TheTrait { }
#[doc(hidden)]
pub use generics::parse as generics_parse;
#[doc(hidden)]
pub use std::compile_error as std_compile_error;
#[macro_export]
macro_rules! impl_the_trait {
(
$name:ident $($token:tt)*
) => {
$crate::generics_parse! {
$crate::impl_the_trait {
@impl $name
}
$($token)*
}
};
(
@impl $name:ident [$($g:tt)*] [$($r:tt)*] [$($w:tt)*]
) => {
impl $($g)* $crate::TheTrait for $name $($r)* $($w)* { }
};
(
@impl $name:ident [$($g:tt)*] [$($r:tt)*] [$($w:tt)*] $($token:tt)+
) => {
$crate::std_compile_error!(
"invalid input, allowed input is '$name $( < $generics > $(where $where_clause)? )?'"
);
};
}