Inteligentné ukazovatele majú ďalšie výhody oproti bežným ukazovateľom. Tu je všetko, čo potrebujete vedieť o inteligentných ukazovateľoch v Ruste.

Správa pamäte je jednou z predností spoločnosti Rust, najmä preto, že bezpečnosť nie je ohrozená. Systém vlastníctva Rustu umožňuje kompilátoru zaručiť bezpečnosť kódu a oslobodenie od chýb pamäte, ako sú visiace ukazovatele a úniky pamäte.

Rust tiež poskytuje inteligentné ukazovatele s ďalšími metaúdajmi a funkciami nad rámec tradičných ukazovateľov. Inteligentné ukazovatele sú užitočné pri riešení úniku pamäte.

Čo sú inteligentné ukazovatele v hrdze?

Inteligentné ukazovatele sú jedným z Typy údajov Rustu ktorý rozširuje možnosti bežných ukazovateľov tým, že ponúka ďalšie funkcie, ako sú preťažené operátory, deštruktory a automatická správa pamäte.

Rust využíva štruktúry na vykonávanie inteligentných ukazovateľov; teda inteligentné ukazovatele majú tiež možnosti vlastníctva.

Keď prepojíte pamäť obsahujúcu dynamicky prideľované údaje s inteligentnými ukazovateľmi, automaticky sa uvoľnia. Inteligentné ukazovatele poskytujú funkcie na ovládanie

instagram viewer
Životnosť Rustovho objektu, vďaka čomu sú užitočné pri predchádzaní chybám, ako je dereferencovanie nulového ukazovateľa a úniky pamäte, ktoré sú obľúbené v iných jazykoch nízkej úrovne, ako sú C a C++.

Výhody používania inteligentných ukazovateľov

Tu je niekoľko výhod používania inteligentných ukazovateľov:

  1. Automatická správa pamäte: Inteligentné ukazovatele poskytujú automatickú správu pamäte, vrátane prideľovania a rozdeľovania, na rozdiel od manuálnej správy pamäte s bežnými ukazovateľmi.
  2. Vylepšená bezpečnosť: Inteligentné ukazovatele presadzujú sémantiku vlastníctva, čím zaisťujú, že len jeden vlastník môže pristupovať k zdrojom naraz, čím sa predchádza sledovaniu údajov a chybám súvisiacim so súbežnosťou.
  3. Flexibilita: Rust poskytuje viacero inteligentných ukazovateľov, každý so svojou sadou vlastnícka sémantika pre flexibilné písanie bezpečného kódu.
  4. Riadenie zdrojov: Inteligentné ukazovatele môžete použiť na správu iných zdrojov, ako sú obslužné programy súborov a sieťové zásuvky, zapuzdrením zdrojov v rámci inteligentného ukazovateľa, ktorý uľahčuje správu ich životného cyklu a zabezpečuje ich správne zatvorenie a uvoľnenie použitie.
  5. Vylepšený výkon: Inteligentné ukazovatele pomáhajú zlepšiť výkon znížením kopírovania a prideľovania pamäte – znížená pamäťová stopa pri používaní inteligentných ukazovateľov vedie k zvýšeniu výkonu.

Inteligentné ukazovatele sú vhodné pre stredne veľké až veľké aplikácie, najmä v prípadoch, keď je kritická správa pamäte.

Typy inteligentných ukazovateľov

Rust poskytuje viacero typov inteligentných ukazovateľov, vrátane Box, Rc, RefCell, a Mutex.

1. Inteligentný ukazovateľ Box

The Box Inteligentný ukazovateľ je najjednoduchší a najbežnejší inteligentný ukazovateľ od spoločnosti Rust. The Box inteligentný ukazovateľ pomáha prideľovať hodnoty na halde a vytvára rámčekový ukazovateľ pre dostupnosť.

The Box Inteligentný ukazovateľ je užitočný pri dynamickom prideľovaní pamäte, keď potrebujete zabezpečiť, aby sa pamäť automaticky uvoľnila, keď sú ukazovatele mimo rozsahu.

Tu je návod, ako môžete deklarovať a používať a Box ukazovateľ:

fnHlavná(){

// nová inštancia inteligentného ukazovateľa boxu
nech x = Box::Nový(5);
println!(X)

}

The Box typ je súčasťou Rustovej predohry, takže na rozdiel od iných inteligentných ukazovateľov nebudete musieť typ importovať.

The X premenná je a Box ukazovateľ ukazujúci na hodnotu 5 celých čísel. Rust alokuje pamäť pre hodnotu na halde a automaticky ju uvoľní, keď je premenná mimo rozsahu.

2. Inteligentný ukazovateľ Rc

The Rc Inteligentný ukazovateľ (počítané referencie) poskytuje funkcie na vytváranie hodnôt zdieľaného vlastníctva. The Rc inteligentné ukazovatele sledujú počet odkazov na hodnotu a uvoľňujú hodnotu, keď je posledný odkaz mimo rozsahu.

The Rc inteligentný ukazovateľ je užitočný, keď potrebujete zdieľať vlastníctvo hodnoty dostupnosti vo viacerých častiach vášho programu.

Vyhlásiť an Rc inteligentný ukazovateľ, importujete súbor Rc struct zo štandardnej knižnice, deklarujte nový Rc ukazovateľ s Nový a naklonujte premennú ukazovateľa s klonovať premenlivý.

použitie std:: rc:: Rc;

fnHlavná() {

// nová inštancia inteligentného ukazovateľa RC
nech x = Rc:: new(5);
nech y = Rc:: klon(&x);

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

The X premenná je Rc premenná ukazovateľa a r premenná je klon s prístupom k hodnote v pamäti. Počet referencií je dva a hodnota sa uvoľní z pamäte, keď sú premenné mimo rozsahu.

3. Inteligentný ukazovateľ RefCell

The RefCell inteligentný ukazovateľ poskytuje vnútornú premenlivosť, ktorá umožňuje koexistenciu nemenných a meniteľných referencií, pokiaľ existuje jedna meniteľná referencia za daný čas.

The RefCell inteligentný ukazovateľ je užitočný pri mutovaní hodnôt vlastnených meniteľnými referenciami.

The Refcell funkcia nie je súčasťou Rustovej predohry, takže na použitie inteligentného ukazovateľa budete musieť importovať štruktúru zo štandardnej knižnice.

použitie std:: cell:: RefCell;

fnHlavná(){

// nová inštancia inteligentného ukazovateľa Refcell
nech x = RefCell:: new(5);

nech y = x.požičať();
nech z = x.požičať_mut();

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

}

The Refcell inteligentný ukazovateľ obsahuje hodnotu a r premenná je nemenný odkaz na hodnotu. The požičať_mut funkcia vytvára meniteľný odkaz na hodnotu.

Program je bezpečný, ak je k dispozícii iba jeden meniteľný odkaz.

4. Inteligentný ukazovateľ Mutex

The Mutex inteligentný ukazovateľ poskytuje vzájomné vylúčenia. The Mutex inteligentný ukazovateľ je užitočný na synchronizáciu prístupu k hodnotám vo viacerých vláknach v súbežných programoch.

The Mutex inteligentný ukazovateľ poskytuje vzájomné vylúčenie, aby sa zabezpečilo, že k hodnote môže pristupovať iba jedno vlákno, pričom sa zabráni sledovaniu údajov.

Budete musieť importovať Mutex struct a vytvorte novú inštanciu s Nový funkciu na použitie Mutex Inteligentný ukazovateľ v hrdze.

použitie std:: synchronizácia:: Mutex;

fnHlavná() {

// nová inštancia ukazovateľa mutex
nech counter = Mutex:: new(0);

{
nechmut num = counter.lock().unwrap();
*číslo += 1;
}

println!("Výsledok: {}", *counter.lock().unwrap());
}

The počítadlo premenná je nová Mutex príklad. The Hlavná funkcia získa zámok na mutex s zámok metóda Mutex príklad. Zámok umožňuje bezpečnú úpravu hodnoty počítadla pred uvoľnením zámku a vytlačením hodnoty.

The Mutex typ zaručuje, že k zdieľaným zdrojom má prístup iba jedno vlákno (v tomto prípade počítadlo premenná) a postupne upravujte jej hodnotu. Vzájomné vylúčenie zabezpečuje, že súbežný prístup k zdieľaným zdrojom je serializovaný, aby sa zabránilo sledovaniu údajov a iným problémom so súbežnosťou.

Model vlastníctva Rust zaručuje bezpečnosť pamäte

Inteligentné ukazovatele sú jedným z prístupov spoločnosti Rust k bezpečnosti a flexibilite pamäte. Vlastnický model Rustu zaisťuje, že programy používajú pamäť bezpečne pomocou nástroja na kontrolu výpožičiek v čase kompilácie.

Kontrola výpožičiek je kľúčovou črtou modelu vlastníctva Rust, ktorý presadzuje prísne pravidlá pre prístupnosť a modifikáciu pamäte.