Rust 的 derive
屬性允許你為結構體、枚舉和特性自動生成實現代碼,從而簡化代碼編寫。derive
可以用于實現許多常見的 trait,如 Debug
、Clone
、PartialEq
等。以下是一些使用 derive
的示例:
Debug
trait:#[derive(Debug)]
struct Person {
name: String,
age: u32,
}
fn main() {
let person = Person {
name: String::from("Alice"),
age: 30,
};
println!("{:?}", person); // 輸出:Person { name: "Alice", age: 30 }
}
Clone
trait:#[derive(Clone)]
struct Vector3D {
x: f64,
y: f64,
z: f64,
}
fn main() {
let v1 = Vector3D { x: 1.0, y: 2.0, z: 3.0 };
let v2 = v1.clone();
println!("v1: {:?}", v1); // 輸出:v1: Vector3D { x: 1.0, y: 2.0, z: 3.0 }
println!("v2: {:?}", v2); // 輸出:v2: Vector3D { x: 1.0, y: 2.0, z: 3.0 }
}
PartialEq
trait:#[derive(PartialEq)]
struct Point {
x: i32,
y: i32,
}
fn main() {
let p1 = Point { x: 1, y: 2 };
let p2 = Point { x: 1, y: 2 };
let p3 = Point { x: 2, y: 3 };
println!("p1 == p2: {}", p1 == p2); // 輸出:p1 == p2: true
println!("p1 == p3: {}", p1 == p3); // 輸出:p1 == p3: false
}
通過使用 derive
,你可以避免手動編寫這些 trait 的實現代碼,從而簡化代碼編寫并減少出錯的可能性。