NoK*_*Key 2 rust rust-proc-macros
我收到此错误:
该特征
quote::to_tokens::ToTokens
未实现proc_macro::Ident
当我尝试运行此代码时:
#[proc_macro_hack]
pub fn between(input: TokenStream) -> TokenStream {
let idents = input
.into_iter()
.map(|i| match i {
TokenTree::Ident(b) => {
b
},
_ => panic!()
})
.collect::<Vec<_>>();
let new_token_stream = quote! {
(#(#idents),*)
};
new_token_stream.into()
}
Run Code Online (Sandbox Code Playgroud)
这就是我想使用它的方式:
fn main() {
let a = 1;
let b = 2;
// Expand to (a, b);
between!(a, b);
}
Run Code Online (Sandbox Code Playgroud)
我还有一个包含上述代码的小项目: https: //bitbucket.org/JoshSinne/pm/src/master/。为什么我无法转换Ident
内部令牌?我尝试使用parse
,into
但这对我来说没有成功。谢谢!
syn
是针对proc_macro2quote
的替代实现构建的。如果您想使用它们,您应该首先将您的转换为,进行必要的操作,最后再转换回来。这两种转换都可以使用/进行,因为它们是双向实现的。proc_macro
proc_macro::TokenStream
proc_macro2::TokenStream
From
Into
归档时间: |
|
查看次数: |
1682 次 |
最近记录: |