Я получаю эту ошибку:
черта 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()
}
Вот как я хочу его использовать:
fn main() {
let a = 1;
let b = 2;
// Expand to (a, b);
between!(a, b);
}
У меня также есть небольшой проект, который содержит код выше: https://bitbucket.org/JoshSinne/pm/src/master/. Почему я не могу преобразовать Ident
внутри токенов? Я пытался использовать parse
, into
, но у меня это не сработало. Спасибо!