Result

Result, Option’a benzer, ancak her biri farklı bir enum varyantına sahip bir işlemin başarısını veya başarısızlığını belirtir. Genelleştirilmiştir (generic): Result<T, E>; burada T, Ok varyantında kullanılır ve E, Err varyantında görünür.

use std::fs::File;
use std::io::Read;

fn main() {
    let file: Result<File, std::io::Error> = File::open("günlük.txt");
    match file {
        Ok(mut file) => {
            let mut contents = String::new();
            if let Ok(bytes) = file.read_to_string(&mut contents) {
                println!("Sevgili günlük: {contents} ({bytes} bayt)");
            } else {
                println!("Dosya içeriği okunamadı");
            }
        }
        Err(err) => {
            println!("Günlük açılamadı: {err}");
        }
    }
}
This slide should take about 5 minutes.
  • Option’da olduğu gibi, başarılı değer Result’ın içinde yer alır ve geliştiriciyi onu açıkça (explicitly) çıkarmaya zorlar. Bu, hata kontrolünü teşvik eder. Bir hatanın asla olmaması gereken durumlarda, unwrap() veya expect() çağrılabilir ve bu aynı zamanda geliştiricinin niyetinin de bir işaretidir.
  • Result dokümantasyonunu okumanız tavsiye edilir. Kurs sırasında değil, ama bahsetmeye değer. Fonksiyonel tarzda programlamaya yardımcı olan birçok kullanışlı metot ve fonksiyon içerir.
  • Result, 4. Günde göreceğimiz gibi hata işlemeyi (error handling) gerçekleştirmek (implement) için standart türdür.