Demet Yapıları (Tuple Structs)

Alan adları (field names) önemsizse demet (tuple) yapısını kullanabilirsiniz:

struct Point(i32, i32);

fn main() {
    let p = Point(17, 23);
    println!("({}, {})", p.0, p.1);
}

Bu genellikle tek alanlı sarmalayıcılar (single-field wrappers - newtype deseni olarak adlandırılır) için kullanılır:

struct PoundsOfForce(f64);
struct Newtons(f64);

fn compute_thruster_force() -> PoundsOfForce {
    todo!("NASA'daki bir roket bilim adamına sorun")
}

fn set_thruster_force(force: Newtons) {
    // ...
}

fn main() {
    let force = compute_thruster_force();
    set_thruster_force(force);
}
This slide should take about 10 minutes.
  • Yeni tür (newtype) deseni, ilkel (primitive) bir türdeki değer hakkındaki ek bilgileri kodlamanın harika bir yoludur, örneğin:
    • Sayı bazı birimlerde ölçülür: Yukarıdaki örnekte Newtons.
    • Değer, oluşturulduğunda bir miktar doğrulamadan geçti, bu nedenle artık onu her kullanımda yeniden doğrulamanız gerekmiyor: PhoneNumber(String) veya OddNumber(u32).
  • Yeni türde desenindeki tek alana erişerek bir Newtons türüne f64 değerinin nasıl ekleneceğini gösterin.
    • Rust genellikle bir nesnenin değerinin otomatik çözülmesini (automatic unwrapping) veya boole değerlerini tamsayı olarak kullanmak gibi açık olmayan şeylerden hoşlanmaz.
    • Operatör yüklemesi 3. günde (jenerikler) tartışıldı.
  • Örnek, Mars İklim Yörünge Aracı hatasına incelikli bir göndermedir.