#[automatically_derived] 是什么意思?

Tim*_*ann 6 rust

#[automatically_derived]在为派生类型生成实现时在serde-derive箱中发现:

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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

我也在几个展开的宏中发现了这一点,但我找不到关于这一行的任何描述。

She*_*ter 7

它向编译器表明不应将标记的代码报告为未使用,其中包括:

// Don't run unused pass for #[derive()]
if let FnKind::Method(..) = fk {
    let parent = ir.tcx.hir().get_parent_item(id);
    if let Some(Node::Item(i)) = ir.tcx.hir().find(parent) {
        if i.attrs.iter().any(|a| a.check_name(sym::automatically_derived)) {
            return;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它也适用于

  • @Tim [你在寻找这个](https://github.com/rust-lang/rust/blob/3b7720399a9006d9d7b89c251fa37ead46f9db7a/src/libsyntax/feature_gate.rs#L695-L1081)?该列表随着时间的推移而变化。 (3认同)