假设我有
macro_rules! tipey {
(Vec<$pt: ty>) => {2};
($pt: ty) => {1};
}
macro_rules! structy {
(struct $i: ident { $($p: ident : $(Vec<)? $pt: ty $(>)?,)+ }) => {
const v: &[usize] = &[ $(tipey!($pt)),+ ];
};
}
structy!(
struct ContentDetails {
pattern: String,
fields: Vec<String>,
}
);
我不想以某种方式来消除类型的歧义,并知道它是Vec〈〉还是简单类型。我只处理Vec,所以如果不可能,就不需要扩展。我遇到的问题是,如果我只将Vec<bool>
与$t: ty
进行匹配,那么我以后就不能将其拆分,以查看$t
是否是Vec〈〉但是如果我试图收集多个tt
或其他东西,那么解析属性列表就会中断。
1条答案
按热度按时间rfbsl7qr1#
这对于一般类型和一般Rust语法来说是非常不可靠的。但是如果你有一个非常窄的用例,那么你可以像这样修改你的代码: