İsimli Yapılar

C ve C++ dillerindeki gibi Rust'ın da özel (kullanıcı tanımlı) yapılara desteği vardır:

struct Person {
    name: String,
    age: u8,
}

fn describe(person: &Person) {
    println!("{} {} yaşında", person.name, person.age);
}

fn main() {
    let mut peter = Person { name: String::from("Peter"), age: 27 };
    describe(&peter);

    peter.age = 28;
    describe(&peter);

    let name = String::from("Avery");
    let age = 39;
    let avery = Person { name, age };
    describe(&avery);

    let jackie = Person { name: String::from("Jackie"), ..avery };
    describe(&jackie);
}
This slide should take about 10 minutes.

Önemli Noktalar:

  • Yapılar C veya C++'daki gibi çalışır.
    • C++'daki gibi ve C'den farklı olarak, bir türü tanımlamak için typedef'e gerek yoktur.
    • C++'dan farklı olarak yapılar arasında kalıtım (inheritance) yoktur.
  • Bu, insanlara farklı yapı türleri olduğunu duyurmak için iyi bir zaman olabilir.
    • Sıfır boyutlu (zero-sized) yapılar (örn. `struct Foo;'), bir özelliği (trait) bazı türlere uygularken kullanılabilir, ancak değerin kendisinde saklamak istediğiniz herhangi bir veri yoktur.
    • Sonraki slaytta alan adları (field names) önemli olmadığında kullanılan Demet (Tupe) yapıları tanıtılacaktır.
  • Eğer zaten doğru adlara sahip değişkenleriniz varsa, o zaman yapıyı bir kısaltma kullanarak oluşturabilirsiniz.
  • ..avery sözdizimi, eski yapıdaki alanların çoğunu, hepsini açıkça yazmamıza gerek kalmadan kopyalamamıza olanak tanır. Bu her zaman son öğe olmalıdır.