#macro-rules #macro #parser #where

no-std 泛型

提供在 macro_rules! 中解析泛型(可选 where 子句)的宏。

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 日

#246Rust 模式

Download history 540/week @ 2024-03-14 621/week @ 2024-03-21 634/week @ 2024-03-28 474/week @ 2024-04-04 420/week @ 2024-04-11 397/week @ 2024-04-18 404/week @ 2024-04-25 320/week @ 2024-05-02 319/week @ 2024-05-09 379/week @ 2024-05-16 331/week @ 2024-05-23 511/week @ 2024-05-30 432/week @ 2024-06-06 352/week @ 2024-06-13 349/week @ 2024-06-20 298/week @ 2024-06-27

1,564 每月下载量
7 包(4 个直接使用)中使用

MIT/Apache

48KB
1.5K SLoC

maintenance: actively developed

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)? )?'"
        );
    };
}

无运行时依赖