【发布时间】:2018-07-12 16:40:27
【问题描述】:
程序宏派生是否可以将来自其他 crate 的派生添加到派生它的结构?
lib.rs
#[derive(Combined)]
struct Foo;
derive_combined.rs
#[macro_use] extern crate quote;
extern crate proc_macro2;
extern crate proc_macro;
extern crate syn;
use proc_macro::TokenStream;
#[proc_macro_derive(Combined)]
pub fn my_macro(input: TokenStream) -> TokenStream {
let input: DeriveInput = syn::parse(input).unwrap();
let ident = input.ident;
let expanded = quote! {
#[derive(Clone, Debug)]
struct #ident;
};
expanded.into()
}
【问题讨论】:
-
这段代码有什么问题?
-
@PeterHall 此代码故意不起作用。您不能复制结构的定义。