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
Fromimpl'leri — tam denetim, daha fazla kod thiserror #[from]— türü belirli hatalar, oluşturulan impl'lerBox<dyn Error>veyaanyhow— 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 olarakIntoveinto()sağlarBox<dyn Error>herhangi bir hatayı kabul ederthiserrorveanyhowkalı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
- Result ve ? İşleci
- thiserror
- anyhow
- Hata Dönüştürme