thiserror
Aangepaste fouttypen
thiserror is een gratis Leer programmeren met Rust-les op CoddyKit. Dit is les 2 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 aangepaste fouten?
Bibliotheken moeten betekenisvolle fouttypen beschikbaar maken, zodat aanroepers op specifieke fouten kunnen reageren. Als u deze met de hand schrijft, krijgt u veel standaardcode. De crate thiserror genereert die voor u.
thiserror toevoegen
Voeg de crate toe als afhankelijkheid. Het is een crate met derive-macro's en zonder runtimekosten.
[dependencies]
thiserror = "1.0"Een Error-enum definiëren
Leid Error af voor een enum waarvan elke variant een afzonderlijke fout vertegenwoordigt. Het attribuut #[error("...")] levert het Display-bericht.
use thiserror::Error;
#[derive(Error, Debug)]
pub enum DataError {
#[error("item not found")]
NotFound,
#[error("invalid input: {0}")]
Invalid(String),
}Velden interpoleren
De berichttekst kan verwijzen naar velden op naam of positie, zodat de fouttekst context bevat.
use thiserror::Error;
#[derive(Error, Debug)]
pub enum ConfigError {
#[error("missing key: {key}")]
Missing { key: String },
#[error("value {0} out of range")]
OutOfRange(i32),
}Automatische Display en Error
De derive implementeert automatisch zowel Display (op basis van uw berichten) als std::error::Error. Handmatige impl-blokken zijn niet nodig.
Een bronfout omwikkelen
#[from] genereert een From-impl, zodat de operator ? een onderliggende fout kan omzetten naar uw type. #[source] markeert de oorzaak.
use thiserror::Error;
#[derive(Error, Debug)]
pub enum AppError {
#[error("io failure")]
Io(#[from] std::io::Error),
#[error("parse failure")]
Parse(#[from] std::num::ParseIntError),
}Het gebruiken met ?
Dankzij #[from] zet de operator ? standaardfouten automatisch om naar uw AppError.
fn read_number(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)
}De bronketen
Wanneer u een fout omwikkelt, stelt thiserror de oorzaak beschikbaar via Error::source. Zo krijgt u volledige foutketens voor logboekregistratie en foutopsporing.
Transparante fouten
#[error(transparent)] geeft zowel Display als de bron door aan de omwikkelde fout. Dat is nuttig voor een variant die fouten alleen doorgeeft.
use thiserror::Error;
#[derive(Error, Debug)]
pub enum WrapError {
#[error(transparent)]
Other(#[from] std::io::Error),
}Wanneer gebruikt u thiserror?
Gebruik thiserror wanneer:
- u een bibliotheek schrijft
- aanroepers specifieke foutvarianten moeten kunnen matchen
- u een stabiele, getypeerde fout-API wilt
Voor toepassingen waarin u fouten alleen omhoog wilt doorgeven, is anyhow vaak eenvoudiger.
Matchen op varianten
Omdat de fout een echte enum is, kunnen aanroepers erop matchen om verschillend op elk type fout te reageren.
fn handle(err: AppError) {
match err {
AppError::Io(_) => println!("retry the file operation"),
AppError::Parse(_) => println!("ask the user to fix input"),
}
}Korte controle
Wat genereert het attribuut #[from] in een thiserror-enum?
Samenvatting
U hebt de crate thiserror geleerd:
#[derive(Error)]genereert Display- en Error-impls#[error("...")]definieert berichten met veldinterpolatie#[from]maakt omzetting van bronfouten met?mogelijktransparentgeeft door aan een omwikkelde fout- Ideaal voor getypeerde fout-API's in bibliotheken
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 “thiserror” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad Leer programmeren met Rust, waaronder “thiserror”, 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 “thiserror”?
Aangepaste fouttypen 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 2 van 4.
Hoe lang duurt de les “thiserror”?
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.