Derive
derive
属性允许为数据结构自动生成新的 项。它使用 MetaListPaths 语法来指定要实现的特征列表或要处理的 派生宏 的路径。
例如,以下代码将为 Foo
创建 impl
项,用于实现 PartialEq
和 Clone
特征,并且类型参数 T
将根据相应的 impl
被赋予 PartialEq
或 Clone
约束。
#![allow(unused)] fn main() { #[derive(PartialEq, Clone)] struct Foo<T> { a: i32, b: T, } }
生成的 PartialEq
的 impl
等效于:
#![allow(unused)] fn main() { struct Foo<T> { a: i32, b: T } impl<T: PartialEq> PartialEq for Foo<T> { fn eq(&self, other: &Foo<T>) -> bool { self.a == other.a && self.b == other.b } } }
您可以通过 过程宏 为您自己的特征实现 derive
。
automatically_derived
属性
automatically_derived
属性会自动添加到由 derive
属性为内置特征创建的 实现 中。它没有直接效果,但可以被工具和诊断提示用于检测这些自动生成的实现。