Fouten converteren
From-implementaties
Fouten converteren is een gratis Leer programmeren met Rust-les op CoddyKit. Dit is les 4 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Leer programmeren met Rust. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Leer programmeren met Rust bevat in totaal 4 lessen.
Waarom fouten omzetten?
Verschillende lagen van code produceren verschillende fouttypen. Om ze via één functie door te geven, moet u fouten op een lager niveau omzetten naar één uniform type. Rust doet dit via de trait From.
De From-trait
From<T> definieert hoe u het ene type uit een ander opbouwt. Door deze trait voor uw fouttype te implementeren, kunt u bronfouten ernaar omzetten.
trait From<T> {
fn from(value: T) -> Self;
}Hoe ? From gebruikt
Wanneer u expr? schrijft en het fouttype verschilt van de fout die de functie teruggeeft, roept de operator From::from aan om de fout om te zetten. Dit maakt het naadloos doorgeven mogelijk.
Eén uniform fouttype
Definieer een enum die elk type fout kan bevatten dat uw functie kan opleveren.
#[derive(Debug)]
enum AppError {
Io(std::io::Error),
Parse(std::num::ParseIntError),
}From implementeren
Schrijf voor elke bronfout een From-impl, zodat deze naar de bijbehorende variant wordt omgezet.
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)
}
}Automatisch doorgeven
Met deze impls op hun plaats zet ? elke fout automatisch om naar AppError.
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 is het spiegelbeeld
Door From<A> for B te implementeren, krijgt u automatisch A: Into<B>. Implementeer bij voorkeur From; dan krijgt u into() er gratis bij.
fn make() -> AppError {
let e: std::io::Error = std::io::Error::other("boom");
e.into() // uses From<io::Error> for AppError
}Trait-objecten inpakken
Voor snelle omzettingen accepteert Box<dyn Error> elk fouttype, omdat de standaardbibliotheek algemene From-impls ernaartoe biedt.
use std::error::Error;
fn run() -> Result<(), Box<dyn Error>> {
let n: i32 = "42".parse()?; // ParseIntError -> Box<dyn Error>
println!("{n}");
Ok(())
}Crates die From genereren
Elke From-impl met de hand schrijven is vervelend. Het attribuut #[from] van thiserror genereert ze, en anyhow zet alles automatisch om naar één type.
Een aanpak kiezen
Samenvatting van strategieën voor omzetting:
- Handmatige
From-impls — volledige controle, meer code thiserror #[from]— getypeerde fouten, gegenereerde implsBox<dyn Error>ofanyhow— minimale omhaal
Context toevoegen tijdens omzetting
Een From-impl kan meer doen dan alleen omwikkelen: hij kan de fout verrijken. Hier voegt de omzetting extra context toe, zodat de uiteindelijke fout informatiever is.
impl From<std::num::ParseIntError> for AppError {
fn from(e: std::num::ParseIntError) -> Self {
// could log or annotate here before wrapping
AppError::Parse(e)
}
}Korte controle
Welke trait gebruikt de operator ? om het ene fouttype naar een ander om te zetten?
Samenvatting
U hebt geleerd hoe u fouten omzet:
?zet fouten om via de traitFrom- Implementeer
From<Source>voor uw fout-enum Fromgeeft u automatischIntoeninto()Box<dyn Error>accepteert elke foutthiserrorenanyhowautomatiseren de standaardcode
Leer Rust met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 39
- Lessen
- 144
Veelgestelde vragen
Is de les “Fouten converteren” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad Leer programmeren met Rust, waaronder “Fouten converteren”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Leer programmeren met Rust bevat in totaal 4 lessen.
Wat leer ik in “Fouten converteren”?
From-implementaties Je oefent met Leer programmeren met Rust door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Leer programmeren met Rust te beginnen?
Ervaring vooraf is niet nodig. Leer programmeren met Rust op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.
Hoe lang duurt de les “Fouten converteren”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Leer programmeren met Rust?
Ja. Elke les over Leer programmeren met Rust bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Result en de ?-operator
- thiserror
- anyhow
- Fouten converteren