#[automatically_derived]是什么意思?

时间:2018-07-23 14:43:42

标签: rust

在生成派生类型的实现时,我在serde-derive的箱子中发现了#[automatically_derived]

quote! {
    #[automatically_derived]
    impl #impl_generics _serde::Serialize for #ident #ty_generics #where_clause {
        fn serialize<__S>(&self, __serializer: __S) -> _serde::export::Result<__S::Ok, __S::Error>
        where
            __S: _serde::Serializer,
        {
            #body
        }
    }
}

这是什么意思?我什么时候应该使用这个?

我也在几个扩展的宏中找到了这个,但是我找不到关于此行的任何描述。

1 个答案:

答案 0 :(得分:4)

向编译器指示the marked code should not be reported as unused

// Don't run unused pass for #[derive()]
if let FnKind::Method(..) = fk {
    let parent = ir.tcx.hir.get_parent(id);
    if let Some(hir::map::Node::NodeItem(i)) = ir.tcx.hir.find(parent) {
        if i.attrs.iter().any(|a| a.check_name("automatically_derived")) {
            return;
        }
    }
}