[英]How are multiple trait bounds expanded in a rust macro?
我有一些 Rust 代码相当于下面的代码片段,它不能编译
trait A {}
trait B {}
macro_rules! implement {
( $type:ty ) => {
struct C<T: $type> { // <-- Changing "$type" to "A + B" compiles
t: T,
}
}
}
implement!(A + B);
fn main() {}
用rustc 1.44.1
编译它会产生:
error: expected one of `!`, `(`, `,`, `=`, `>`, `?`, `for`, lifetime, or path, found `A + B`
同时用A + B
替换$type
编译。
我的问题是为什么它不能按原样编译,如何改变它呢?
(注意:Rust 有点新,我相信 go 有更简单的方法来解决这个问题,任何建议都会有所帮助)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.