Desenler ve Çözümlenme (Destructuring)

Demetler (tuples) ve diğer yapılandırılmış değerlerle (structured values) çalışırken, içteki değerleri yerel (local) değişkenlere çıkarmayı istemek yaygındır. Bu, doğrudan iç değerlere erişilerek elle yapılabilir:

fn print_tuple(tuple: (i32, i32)) {
    let left = tuple.0;
    let right = tuple.1;
    println!("sol: {left}, sağ: {right}");
}

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

fn print_tuple(tuple: (i32, i32)) {
    let (left, right) = tuple;
    println!("sol: {left}, sağ: {right}");
}
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.