如何在Rust宏中匹配特征?

我的目标是将其作为输入特征类型。

my_test_macro!(Trait1,Trait2<Test1,Test2=Test3>)

到目前为止,我一直试图像这样编写解析器。

$( $ty:ident < $( $N:ident $(: $b0:ident $(+$b:ident)* )? ),*  $($tname:ident=$ttype:ident),* > )+*

但是它造成了局部歧义。

error: local ambiguity: multiple parsing options: built-in NTs ident ('N') or ident ('tname').
li57268631 回答:如何在Rust宏中匹配特征?

您可以使用typath metavariables,具体取决于您要执行的操作:

macro_rules! my_test_macro {
    ($t1:ty,$t2:path) => {};
}

fn main() {
    my_test_macro!(Trait1,Trait2<Test1,Test2 = Test3>);
}

另请参阅:

本文链接:https://www.f2er.com/3158783.html

大家都在问