0Pricing
Learn Rust Coding · Ders

Hata Dönüştürme

From uygulamaları

Hata Dönüştürme, CoddyKit'te ücretsiz bir Learn Rust Coding dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Learn Rust Coding öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Learn Rust Coding kursu toplamda 4 dersten oluşur.

Hatalar Neden Dönüştürülür?

Kodun farklı katmanları farklı hata türleri üretir. Bunları tek bir işlev üzerinden iletmek için alt düzey hataları birleşik bir türe dönüştürmeniz gerekir. Rust bunu From özelliği aracılığıyla yapar.

From Özelliği

From<T>, bir türün diğerinden nasıl oluşturulacağını tanımlar. Bunu hata türünüz için uygulamak, kaynak hataları bu türe dönüştürmenizi sağlar.

trait From<T> {
    fn from(value: T) -> Self;
}

? From'u Nasıl Kullanır

expr? yazdığınızda ve hata türü işlevin döndürdüğü hata türünden farklı olduğunda işleç, hatayı dönüştürmek için From::from çağrısı yapar. Sorunsuz iletimin ardındaki mekanizma budur.

Birleşik Hata Türü

İşlevinizin üretebileceği her hata türünü tutacak bir enum tanımlayın.

#[derive(Debug)]
enum AppError {
    Io(std::io::Error),
    Parse(std::num::ParseIntError),
}

From Uygulama

Her kaynak hatanın eşleşen varyanta dönüştürülmesi için bir From impl'i yazın.

impl From<std::io::Error> for AppError {
    fn from(e: std::io::Error) -> Self {
        AppError::Io(e)
    }
}

impl From<std::num::ParseIntError> for AppError {
    fn from(e: std::num::ParseIntError) -> Self {
        AppError::Parse(e)
    }
}

Otomatik Olarak İletme

Bu impl'ler hazır olduğunda ?, her hatayı ek bir işlem gerektirmeden AppError türüne dönüştürür.

fn read_count(path: &str) -> Result<i32, AppError> {
    let text = std::fs::read_to_string(path)?; // io::Error -> AppError
    let n: i32 = text.trim().parse()?;          // ParseIntError -> AppError
    Ok(n)
}

Into Bunun Karşılığıdır

From<A> for B uygulamak size otomatik olarak A: Into<B> sağlar. From uygulamayı tercih edin; into() karşılığını ücretsiz elde edersiniz.

fn make() -> AppError {
    let e: std::io::Error = std::io::Error::other("boom");
    e.into() // uses From<io::Error> for AppError
}

Özellik Nesnelerini Kutulama

Hızlı dönüşümler için Box<dyn Error> herhangi bir hata türünü kabul eder; standart kitaplık bunun içine yönelik genel From impl'leri sağlar.

use std::error::Error;

fn run() -> Result<(), Box<dyn Error>> {
    let n: i32 = "42".parse()?; // ParseIntError -> Box<dyn Error>
    println!("{n}");
    Ok(())
}

From Oluşturan Kasalar

Her From impl'ini elle yazmak zahmetlidir. thiserror'un #[from] niteliği bunları oluşturur; anyhow ise her şeyi otomatik olarak tek bir türe dönüştürür.

Bir Yaklaşım Seçme

Dönüştürme stratejilerinin özeti:

  • Elle yazılan From impl'leri — tam denetim, daha fazla kod
  • thiserror #[from] — türü belirli hatalar, oluşturulan impl'ler
  • Box<dyn Error> veya anyhow — en az ek işlem

Dönüştürme Sırasında Bağlam Ekleme

Bir From impl'i yalnızca sarmalamakla kalmaz; hatayı zenginleştirebilir. Burada dönüşüm, son hatanın daha bilgilendirici olması için ek bağlam ekler.

impl From<std::num::ParseIntError> for AppError {
    fn from(e: std::num::ParseIntError) -> Self {
        // could log or annotate here before wrapping
        AppError::Parse(e)
    }
}

Kısa Kontrol

? işleci bir hata türünü diğerine dönüştürmek için hangi özelliği kullanır?

Özet

Hata dönüştürmeyi öğrendiniz:

  • ?, hataları From özelliği aracılığıyla dönüştürür
  • Hata enum'unuz için From<Source> uygulayın
  • From, size ücretsiz olarak Into ve into() sağlar
  • Box<dyn Error> herhangi bir hatayı kabul eder
  • thiserror ve anyhow kalıp kodu otomatikleştirir

Sıkça Sorulan Sorular

“Hata Dönüştürme” dersi ücretsiz mi?

Evet — “Hata Dönüştürme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Learn Rust Coding kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Learn Rust Coding kursu toplamda 4 dersten oluşur.

“Hata Dönüştürme” dersinde ne öğreneceğim?

From uygulamaları Learn Rust Coding ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Learn Rust Coding öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Learn Rust Coding, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Hata Dönüştürme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Learn Rust Coding dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Learn Rust Coding dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Result ve ? İşleci
  2. thiserror
  3. anyhow
  4. Hata Dönüştürme
← Learn Rust Coding Sayfasına Dön