1

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

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').
4

1 回答 1

2

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

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

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

也可以看看:

于 2019-11-05T14:43:18.137 回答