Виведення

Підтримувані трейти можуть бути автоматично застосовані до ваших кастомних типів наступним чином:

#[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!("{:?} vs. {:?}", p1, p2);
}
This slide should take about 3 minutes.

Виведення реалізовано за допомогою макросів, і багато крейтів надають корисні макроси виведення для додавання корисної функціональності. Наприклад, serde може виводити підтримку серіалізації для структури за допомогою #[derive(Serialize)].