Desenler ve Çözümlenme (Destructuring)

Rust, bir tuple gibi daha büyük bir değeri, onu oluşturan parçalara çözümlemek (destructure) için desen eşleştirmeyi (pattern matching) kullanmayı destekler:

fn check_order(tuple: (i32, i32, i32)) -> bool {
    let (left, middle, right) = tuple;
    left < middle && middle < right
}

fn main() {
    let tuple = (1, 5, 3);
    println!(
        "{tuple:?}: {}",
        if check_order(tuple) { "sıralanmış" } else { "sıralı de" }
    );
}
This slide should take about 5 minutes.
  • Burada kullanılan desenler “reddedilemez (irrefutable)“dir, yani derleyici = sağındaki değerin desenle aynı yapıya sahip olduğunu statik olarak doğrulayabilir.
  • Bir değişken adı, her zaman herhangi bir değerle eşleşen reddedilemez (irrefutable) bir desendir, bu nedenle tek bir değişkeni bildirmek için let’i kullanabiliriz.
  • Rust ayrıca koşullu ifadelerde desenlerin (patterns) kullanılmasını destekleyerek eşitlik karşılaştırmasının (comparison) ve çözümlenmenin (destructuring) aynı anda gerçekleşmesine olanak tanır. Bu desen eşleştirme stili daha sonra daha ayrıntılı olarak tartışılacaktır.
  • Desenin (pattern) eşleştirilen değerle eşleşmediğinde oluşacak derleyici hatasını göstermek için yukarıdaki örnekleri düzenleyin.