Pakket funksjon for feilhåndtering i rust

Pakket funksjon for feilhåndtering i rust

Anta at du trenger et konkret fundament på feilhåndtering i rust. Du må forstå alternativet og resultattypene. De holder grunnlaget for å pakke ut og forventer funksjoner som er kritiske i feilhåndtering.

La oss se om vi kan gi mening om dem i denne opplæringen.

Rust alternativtype

Rust -alternativtypen er en relativt "enkel" enum som brukes til å produsere muligheten for fravær.

Ta en titt på følgende alternativ syntaks:

enumalternativ
Ingen,
Noen (t),

Du kan merke at det har to varianter: noe (noen) og ingenting (ingen). Evnen til å fortelle kompilatoren hvordan man håndterer muligheten for fravær er viktig.

Kort sagt, tenk på alternativtypen som en boks som kan ha noe eller ingenting annet enn ikke begge deler.

Rust resultattype

Resultattypen er også definert i standardbiblioteket. Syntaksen er gitt nedenfor:

enumresultat
OK (T),
Feil (e),

Den har to varianter: OK og feil. Legg merke til at det er nært likt alternativtype. Dette er fordi det fungerer veldig likt.

I motsetning til opsjonstypen, “forventer imidlertid" muligheten for en feil. Tenk på det på denne måten. Hvis du utfører en operasjon, er det bare to ting som kan skje, enten er operasjonen vellykket, derav OK.

Eller operasjonen mislykkes, og du får en feil. Derfor dukker feilvarianten opp. Når operasjonen returnerer en feil i rust, vil feil () -varianten ringe panikken! makro og avslutning.

Men hva har dette å gjøre med feilhåndtering?

Det er to måter å håndtere muligheten for fravær. Den første er eksplisitt håndtering ved hjelp av kampoperatøren, og den neste er implisitt håndtering med utpakkingsfunksjonen.

Følgende eksempelkode illustrerer den oppgitte informasjonen:

#[tillat (dead_code)]
fncheck_db (db: alternativ)
// eksplisitt håndtak med kamp
matchdb
Noen ("mysql") => println!("Server som kjører på port: 3306"),
Noen ("postgreSql") => println!("Server som kjører på port: 5432"),
Noen (indre) => println!("La meg sjekke det!!!"),
Ingen => println!("Gi en DB:"),


#[tillat (dead_code)]
fndb (db: alternativ)
// Implisitt håndtak med utpakking
IFDB.Unwrap () == ""
// panikk hvis ingen
panikk!("Abortert")


fnMain ()
letMysql = noen ("mysql");
LetPostgres = noen ("PostgreSql");
La ingen = ingen;
check_db (mysql);
check_db (postgres);
check_db (noen ("mongodb"));
check_db (ingen);
DB (noen ("MongoDB"));
DB (ingen);

Det forrige eksemplet bruker to funksjoner for å illustrere eksplisitt og implisitt feilhåndtering i ingen og noen returverdier.

Den første bruker kampoperatøren for å sjekke forskjellige saker, mens den andre bruker utpakking. Hvis den mottar ingen, er funksjonspanikkene.

Den forrige koden inneholder følgende utdata:

Konklusjon

Denne artikkelen gjennomgår feilhåndteringen på rustprogrammeringsspråket. Denne prosessen inkluderer utpakking og forventer funksjoner for å fullføre prosessen. I tillegg ble rustalternativtypen og rustresultattypen diskutert. Vi håper du fant denne artikkelen nyttig. Sjekk andre Linux -hint -artikler for flere tips og informasjon.