Smarte pekere er pekere med utvidede evner, for eksempel bundne sjekker og automatisk minnestyring. Smarte pekere inkluderer også flere metadata. Nå er ikke konseptet med smarte pekere nytt, spesielt ikke for C ++ -programmerere.
For denne artikkelen vil vi utforske forskjellige smarte pekere som definert i Rust Standard Library.
Viktige punkter
I rust er smarte pekere datastrukturer, men i motsetning til normale pekere, kan smarte pekere faktisk eie data. De implementeres ofte ved bruk av strukturer, men skiller seg fra normale strukturer i den forstand at de implementerer Deref- og drop -egenskaper.
Det er 5 smarte pekere å vite i rust:
MERK: I rust refererer til datatypen.
Husk at ikke dekker alle smarte pekere i denne artikkelen.
Eske
Boksen Smart Pointer gir en måte å referere til data som er lagret i heapminnet. Som standard tildeler Rust alt på stabelminnet. Ved hjelp av boksen smart peker kan vi få tilgang til data på haugen, og har ingen ytelse overhead.
The Box Smart Pointer adlyder også eierreglene og lån. Derfor har den en enkelt eier av data og kan bare ha en mutbar referanse og et hvilket som helst antall uforanderlige referanser.
fn main ()I eksemplet over har vi en boks smart peker som lagrer verdien 5 i haugen. Husk at selve boksen er lagret i stabelen.
Når programmet er avsluttet, blir boksen omgjort fra minnet.
Deref
Som navnet antyder, brukes Deref Smart Pointer for å tillate manipulering av derferencing -operasjonen. Ved hjelp av Deref Smart Pointer kan du lage en struktur som kan fungere med både smart peker og referanser.
Et eksempelkode er som vist nedenfor:
Bruk std :: ops :: derf;Miste
Drop Smart Pointer brukes til fritt minne som er tildelt i haugen. Drop -egenskapen i rust håndterer fri minnet når en variabel går ut av omfang. Vi trenger ikke å kalle denne egenskapen manuelt, da rust vil gjøre dette for oss. Vi kan imidlertid implementere det for tilpassede typer som vist.
struct myStructOvennevnte implementerer droptrekk for tilpasset egenskap. Utgangen er som vist:
Dropping: 200
Slipp: 100
Konklusjon
I denne artikkelen dekker vi hvordan vi kan lage og jobbe med vanlige smarte pekere på rustprogrammeringsspråket. Du kan lære mer om Rust Smart Pointers i ressursen nedenfor:
https: // doc.Rust-Lang.org/bok/CH15-00-smart-poeng.html