Išmaniosios rodyklės turi papildomų pranašumų, palyginti su įprastomis rodyklėmis. Štai viskas, ką reikia žinoti apie išmaniąsias „Rust“ rodykles.

Atminties valdymas yra vienas iš Rust pardavimo taškų, ypač dėl to, kad saugumas nėra pažeistas. „Rust“ nuosavybės sistema leidžia kompiliatoriui garantuoti kodo saugumą ir apsaugą nuo atminties klaidų, tokių kaip kabančios rodyklės ir atminties nutekėjimai.

„Rust“ taip pat teikia išmaniąsias rodykles su papildomais metaduomenimis ir galimybėmis, neskaitant tradicinių rodyklių. Išmaniosios rodyklės yra patogios sprendžiant atminties nutekėjimo problemą.

Kas yra išmanieji rodyklės rūdyje?

Išmaniosios rodyklės yra viena iš Rusto duomenų tipai kuri išplečia įprastų rodyklių galimybes siūlydama papildomas funkcijas, pvz., perkrautus operatorius, naikintuvus ir automatinį atminties valdymą.

Rust naudoja struktūras išmaniosioms nuorodoms vykdyti; taigi, išmaniosios rodyklės taip pat turi nuosavybės galimybes.

Kai atmintį, kurioje yra dinamiškai paskirstyti duomenys, susiejate su išmaniosiomis rodyklėmis, jos automatiškai atlaisvinamos. Išmaniosios rodyklės suteikia galimybę valdyti

instagram viewer
Rūdžių objekto gyvavimo laikas, todėl jie yra patogūs apsisaugoti nuo klaidų, pvz., nulinio rodyklės atšaukimo ir atminties nutekėjimo, kurie yra populiarūs kitose žemo lygio kalbose, pvz., C ir C++.

Išmaniųjų rodyklių naudojimo pranašumai

Štai keletas išmaniųjų rodyklių naudojimo pranašumų:

  1. Automatinis atminties valdymas: Išmaniosios rodyklės užtikrina automatinį atminties valdymą, įskaitant paskirstymą ir atskyrimą, priešingai nei rankinis atminties valdymas naudojant įprastas rodykles.
  2. Patobulintas saugumas: Išmaniosios rodyklės užtikrina nuosavybės semantiką, užtikrindamos, kad tik vienas savininkas galėtų pasiekti išteklius per vieną kartą, užkertant kelią duomenų pėdsakams ir su vienalaikiškumu susijusioms klaidoms.
  3. Lankstumas: Rust pateikia keletą išmaniųjų rodyklių, kurių kiekvienas turi savo rinkinį nuosavybės semantika kad būtų galima lanksčiai rašyti saugų kodą.
  4. Resursu valdymas: galite naudoti išmaniąsias nuorodas, kad galėtumėte valdyti kitus išteklius, pvz., failų tvarkykles ir tinklo lizdus, ​​įtraukdami išteklius išmaniajame žymeklyje, kuris padeda lengviau valdyti jų gyvavimo ciklą ir užtikrinti, kad jie būtų tinkamai uždaryti ir atleisti naudoti.
  5. Patobulintas našumas: Išmaniosios rodyklės padeda pagerinti našumą sumažindamos atminties kopijavimą ir paskirstymą – naudojant išmaniąsias rodykles sumažėja atminties talpa, todėl našumas padidėja.

Išmaniosios rodyklės tinka vidutinio ir didelio dydžio programoms, ypač tais atvejais, kai atminties valdymas yra labai svarbus.

Išmaniųjų rodyklių tipai

Rust siūlo kelių tipų išmaniąsias rodykles, įskaitant Dėžė, Rc, RefCell, ir Mutex.

1. „Box Smart Pointer“.

The Dėžė „Smart Pointer“ yra paprasčiausias ir labiausiai paplitęs „Rust“ išmanusis rodyklė. The Dėžė išmanusis žymeklis padeda priskirti reikšmes krūvoje ir sukuria prieinamumo žymeklį dėžutėje.

The Dėžė „Smart Pointer“ yra patogus dinaminiam atminties paskirstymui, kai reikia užtikrinti, kad atmintis būtų automatiškai atlaisvinama, kai rodyklės nepatenka į taikymo sritį.

Štai kaip galite deklaruoti ir naudoti a Dėžė rodyklė:

fnpagrindinis(){

// naujas laukelio išmaniojo rodyklės pavyzdys
leisti x = Dėžė::nauja(5);
println!(x)

}

The Dėžė tipas yra Rust preliudijos dalis, todėl jums nereikės importuoti tipo, skirtingai nuo kitų išmaniųjų rodyklių.

The x kintamasis yra a Dėžė rodyklė, rodanti 5 sveikųjų skaičių reikšmę. Rust paskirsto atmintį krūvoje esančiai vertei ir automatiškai atšaukia, kai kintamasis nepatenka į taikymo sritį.

2. Rc Smart Pointer

The Rc (Skaičiuojama nuoroda) išmanusis žymeklis suteikia funkcionalumą kuriant bendros nuosavybės vertybes. The Rc išmaniosios rodyklės seka nuorodų į reikšmę skaičių ir panaikina reikšmę, kai paskutinė nuoroda nepatenka į taikymo sritį.

The Rc išmanusis žymeklis yra patogus, kai reikia pasidalyti nuosavybės teise, kad būtų pasiekiama keliose programos dalyse.

Norėdami paskelbti an Rc smart pointer, importuosite Rc struct iš standartinės bibliotekos, paskelbkite naują Rc žymeklį su naujas funkciją ir klonuokite žymeklio kintamąjį naudodami klonas kintamasis.

naudoti std:: rc:: Rc;

fnpagrindinis() {

// naujas RC išmaniojo žymeklio egzempliorius
leisti x = Rc:: new(5);
leisti y = Rc:: klonas (&x);

println!("x = {}, y = {}", x, y);
}

The x kintamasis yra Rc žymeklio kintamasis ir y kintamasis yra klonas, turintis prieigą prie reikšmės atmintyje. Nuorodų skaičius yra du, o reikšmė atimama iš atminties, kai kintamieji nepatenka į taikymo sritį.

3. „RefCell Smart Pointer“.

The RefCell Išmanusis žymeklis suteikia vidinį kintamumą, leidžiantį nekintamoms ir kintamoms nuorodoms egzistuoti kartu, jei per tam tikrą laiką yra viena kintama nuoroda.

The RefCell išmanusis žymeklis yra patogus, kai keičiamos kintamoms nuorodoms priklausančios reikšmės.

The Refcell funkcija nėra Rust preliudijos dalis, todėl turėsite importuoti struktūrą iš standartinės bibliotekos, kad galėtumėte naudoti išmanųjį žymeklį.

naudoti std:: cell:: RefCell;

fnpagrindinis(){

// naujas „Refcell“ išmaniojo žymeklio pavyzdys
leisti x = RefCell:: new(5);

leisti y = x.skolinti();
leisti z = x.skolinti_mut();

println!("y = {}", *y);
println!("z = {}", *z);

}

The Refcell išmaniajame žymeklyje yra reikšmė ir y kintamasis yra nekintanti nuoroda į reikšmę. The skolintis_mut funkcija sukuria kintamą vertės nuorodą.

Programa yra saugi, jei vienu metu yra tik viena kintama nuoroda.

4. „Mutex Smart Pointer“.

The Mutex išmanusis rodyklė suteikia abipuses išimtis. The Mutex išmanusis žymeklis yra patogus norint sinchronizuoti prieigą prie verčių keliose gijose vienu metu veikiančiose programose.

The Mutex išmanusis žymeklis suteikia abipusį išskyrimą, kad būtų užtikrinta, jog tik viena gija galėtų pasiekti vertę, tuo pačiu užkertant kelią duomenų pėdsakams.

Turėsite importuoti Mutex sukurti ir sukurti naują egzempliorių su naujas funkcija naudoti Mutex Išmanusis rodyklė rūdyje.

naudoti std:: sinchronizavimas:: Mutex;

fnpagrindinis() {

// naujas mutex rodyklės pavyzdys
leisti skaitiklis = Mutex:: new(0);

{
leistimut skaičius = counter.lock().unwrap();
*skaičius += 1;
}

println!("Rezultatas: {}", *skaitiklis.užraktas().unwrap());
}

The skaitiklis kintamasis yra naujas Mutex instancija. The pagrindinis funkcija įgyja nutildymo užraktą su užraktas metodas Mutex instancija. Užraktas leidžia saugiai keisti skaitiklio vertę prieš atleidžiant užraktą ir spausdinant vertę.

The Mutex tipas garantuoja, kad tik viena gija gali pasiekti bendrinamus išteklius (šiuo atveju skaitiklis kintamasis) ir vienu metu keisti jo reikšmę. Abipusė išskyrimas užtikrina, kad vienalaikė prieiga prie bendrų išteklių būtų nuosekli, kad būtų išvengta duomenų pėdsakų ir kitų lygiagretumo problemų.

Rust nuosavybės modelis garantuoja atminties saugumą

Išmaniosios rodyklės yra vienas iš „Rust“ metodų, susijusių su atminties saugumu ir lankstumu. Rust nuosavybės modelis užtikrina, kad programos saugiai naudotų atmintį su skolinimosi tikrintuvu kompiliavimo metu.

Skolinimosi tikrintuvas yra esminė „Rust“ nuosavybės modelio savybė, kuri užtikrina griežtas atminties prieigos ir modifikavimo taisykles.