Виведення
Підтримувані трейти можуть бути автоматично застосовані до ваших кастомних типів наступним чином:
#[derive(Debug, Clone, Default)]
struct Player {
name: String,
strength: u8,
hit_points: u8,
}
fn main() {
let p1 = Player::default(); // Трейт Default додає `default` конструктор .
let mut p2 = p1.clone(); // Трейт Clone додає `clone` метод.
p2.name = String::from("EldurScrollz");
// Трейт Debug додає підтримку друку з `{:?}`.
println!("{p1:?} проти {p2:?}");
}
This slide should take about 3 minutes.
Виведення реалізовано за допомогою макросів, і багато крейтів надають корисні макроси виведення для додавання корисної функціональності. Наприклад, serde може виводити підтримку серіалізації для структури за допомогою #[derive(Serialize)].