Rustdestruktøren består av to komponenter:
Rusttyper som Box, VEC, String, File and Processes implementerer Drop -egenskapen som standard for å frigjøre ressursene.
Implementering av Rust Drop -egenskap
La oss se hvordan vi kan implementere en egenskap for en tilpasset type.
Syntaksen for drop -egenskap er som vist:
trekkfallSom nevnt vil Rust automatisk slippe en verdi hvis den går ut av omfang. Dette gjøres i omvendt skapelsesrekkefølge.
Ta eksempel nedenfor som implementerer en drop -egenskap for en tilpasset type.
Bruk std :: tråd;
Bruk std :: tid :: varighet;
strukturer
Brukernavn: & 'Statisk STR,
Impliser slipp for bruker
fndrop (& mutself)
Println!("Slipp ", selv.brukernavn);
fnMain ()
// Omfang 1
La _User1 = bruker brukernavn: "brukernavn1";
// Omfang 2
La _User2 = bruker brukernavn: "brukername2";
// Omfang 3
La _User3 = bruker brukernavn: "brukername3";
La _User4 = bruker brukernavn: "brukername4";
Println!("Utgangsomfang 3");
Println!("Exited Scope 3");
Println!("---------------------------------------------------------------------------------------------------- ");
// vente
Tråd :: Sov (varighet :: fra_millis (1500));
Println!("Eksprang 2");
Println!("Exited Scope 2");
Println!("---------------------------------------------------------------------------------------------------- ");
// slipp variabel manuelt
Tråd :: Sov (varighet :: fra_millis (1500));
slipp (_user1);
Println!("Hovedfunksjonen lukk!");
Println!("---------------------------------------------------------------------------------------------------- ");
Hvis vi kjører koden over, bør vi se en utdata som vist nedenfor:
La oss forklare hva koden ovenfor gjør. Vi starter med å definere en tilpasset type ved hjelp av en struktur. Merk at vi spesifiserer brukernavnfeltet for å ha en statisk levetid.
Deretter definerer vi en drop -egenskap for brukertypen. Dette er en enkel drop -egenskap som bare skriver ut til konsollen når en variabel blir droppet etter at den går ut av omfang.
I hovedfunksjonen oppretter vi en forekomst av brukerstrukturen som heter “User1”.
Vi lager deretter to nye blokker som inneholder sitt eget omfang og definerer variabler i hvert omfang.
Legg merke til Println -meldingen som beskriver når vi skal ut av omfanget, og når en variabel blir droppet.
Vi implementerer også en søvnvarighet for å illustrere bryteren mellom omfang.
Til slutt slipper vi variabelen manuelt i hovedomfanget ved å bruke slippfunksjonen som definert i drop -egenskapen.
Konklusjon
Denne korte artikkelen illustrerer hvordan du implementerer droptrekk for tilpassede typer og hvordan dråpe fungerer når en variabel går ut av omfang.