我有一個宏創建一個結構和一堆支持函數和特徵實現。對於這個問題,我們感興趣的是:如何從宏創建參數化類型?
macro_rules! make_struct {
($name: ident) => {
struct $name;
}
}
這工作你會期望:
make_struct!(MyStruct);
如果我想打一個參數化類型然而,我的運氣:
make_struct!(AnotherStruct<T: SomeTrait>);
test.rs:8:27: 8:28 error: no rules expected the token `<`
test.rs:8 make_struct!(AnotherStruct<T: SomeTrait>);
該結構的名稱是ident
所以我不能只是改變,在宏觀ARGS(如到ty
):
test.rs:3:16: 3:21 error: expected ident, found `MyStruct`
test.rs:3 struct $name;
那麼我該如何編寫這個宏來處理兩者?或者我需要分開嗎?在後一種情況下,宏是什麼樣的?