gpt4 book ai didi

macros - 如何匹配宏中的特征边界?

转载 作者:行者123 更新时间:2023-11-29 08:08:34 25 4
gpt4 key购买 nike

我正在尝试匹配泛型类型的特征边界:

macro_rules! test {
(
where $(
$bounded_type:ident: $( $bound:tt )++,
)+
) => {
// Dummy expansion for test:
struct Foo<T, U>
where $(
$bounded_type : $( $bound )++,
)+
{
t: T,
u: U
}
}
}

test! {
where
T: PartialEq + Clone,
U: PartialEq,
}

fn main() {}

不幸的是,如果我理解得很好,匹配特征的唯一方法是 tt 片段,但这个片段几乎可以匹配任何东西,所以无论我做什么,我都会得到一个错误:

error: local ambiguity: multiple parsing options: built-in NTs tt ('bound') or 1 other option.

如何匹配这段代码?

请注意,我不需要非常优雅的东西(对于公共(public)用户我不需要它)但是当然,越优雅越好。

最佳答案

最好的办法是阅读 source code for the parse-generics-shim crate ;它有点旧,但希望仍然可以使用。这种方式太复杂了,无法在 Stack Overflow 问题中进行解释,因为它基本上涉及将该 crate 的源代码复制并粘贴到答案中。

更简单的方法是解析实际的 Rust 语法,并使用宏解析器可以处理的东西,比如将约束包装在一个组中(比如 { ... }).

关于macros - 如何匹配宏中的特征边界?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51579647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com