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)
veyaOddNumber(u32)
.
- Sayı bazı birimlerde ölçülür: Yukarıdaki örnekte
- Yeni türde desenindeki tek alana erişerek bir
Newtons
türünef64
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.