Enum ve Pattern Matching: Rust'ta Güçlü Veri Yapıları
2023-08-25
Rust programlama dilinde enum ve pattern matching özellikleri, tip güvenliği ve kod okunabilirliği için oldukça önemli ve güçlüdür. enum (enumerasyonlar), farklı varyantları (variant) olan bir türü temsil eder. pattern matching ise, bu varyantları kolayca ve güvenli bir şekilde ele almanıza olanak tanır.
Enum Nedir?
enum keyword’ü ile bir enumerasyon oluşturabilirsiniz. Her bir “varyant” farklı bir olası değeri temsil eder.
enum Renk {
Kirmizi,
Yesil,
Mavi,
}
Bu örnekte Renk adlı bir enum tanımladık ve içerisine Kirmizi, Yesil, ve Mavi adlı varyantları ekledik.
Enum’ların Kullanımı
Enum varyantlarını oluşturmak için :: operatörünü kullanırız.
let r = Renk::Kirmizi;
Pattern Matching ile Enum
match ifadesi, bir enum‘ın hangi varyant olduğunu kontrol etmek için kullanılır.
fn ana_renk_yazdir(renk: Renk) {
match renk {
Renk::Kirmizi => println!("Bu renk kırmızıdır."),
Renk::Yesil => println!("Bu renk yeşildir."),
Renk::Mavi => println!("Bu renk mavidir."),
}
}
Enum’lara Veri Eklemek
Enum varyantları da veri tutabilir.
enum Mesaj {
Yaz(String),
Oku(u64),
Sil,
}
Pattern Matching ile Verili Enum
fn mesaj_isle(mesaj: Mesaj) {
match mesaj {
Mesaj::Yaz(icerik) => println!("Yazılacak mesaj: {}", icerik),
Mesaj::Oku(id) => println!("Okunacak mesajın ID'si: {}", id),
Mesaj::Sil => println!("Mesaj silinecek"),
}
}
if let ile Daha Basit Pattern Matching
Sadece bir varyant ile ilgileniyorsanız, if let kullanabilirsiniz.
if let Mesaj::Yaz(icerik) = mesaj {
println!("Yazılacak mesaj: {}", icerik);
}
Option ve Result Enumları
Rust’ta çok sık kullanılan iki özel enum vardır: Option ve Result.
enum Option<T> {
Some(T),
None,
}
enum Result<T, E> {
Ok(T),
Err(E),
}
Örneğin, bir değer olabilir ya da olmayabilirse Option kullanılır.
let x: Option<i32> = Some(5);
let y: Option<i32> = None;
Enum ve Methodlar
Enum’lar da impl bloğu ile method tanımlayabilir.
impl Mesaj {
fn yaz_yeni(icerik: String) -> Mesaj {
Mesaj::Yaz(icerik)
}
}
Kısacası, Rust’ta enum ve pattern matching ile kod daha okunabilir, daha güvenli ve daha esnek hale gelir.
