如下
/// 加入macro的其中一种类型
enum Foo {
A,
B,
}
// 例如如下格式,两种不同的类型,随机顺序传入example!
example!("a", Foo::A, "c", "d", Foo::B);
目前能想到的用$pattern:pat再用regex处理,但是感觉很蹩脚
1
共 2 条评论, 1 页
如下
/// 加入macro的其中一种类型
enum Foo {
A,
B,
}
// 例如如下格式,两种不同的类型,随机顺序传入example!
example!("a", Foo::A, "c", "d", Foo::B);
目前能想到的用$pattern:pat再用regex处理,但是感觉很蹩脚
评论区
写评论macro_rules! example { () => (); ($e:literal)=>{println!("{} I am literal!",stringify!($e))}; ($e:expr)=> {println!("{} I am expr!" ,stringify!($e))}; ($head:expr, $($tail:expr),) => ( example!($head); example!($($tail),)); }
#[derive(Debug, Clone)] enum Foo { A=1, B=2, }
fn main() { example!("a",Foo::A,Foo::B,"b","c");
/* result "a" I am literal! Foo::A I am expr! Foo::B I am expr! "b" I am literal! "c" I am literal! */ }
大概了解了点,没来及测试,同问的同学可以参考下面链接的回答
https://rustcc.cn/article?id=8eef25b7-3754-4e97-97f3-af5f4606271e