Viedajām norādēm ir papildu priekšrocības salīdzinājumā ar parastajiem rādītājiem. Šeit ir viss, kas jums jāzina par viedajiem rādītājiem Rust.
Atmiņas pārvaldība ir viens no Rust pārdošanas punktiem, jo īpaši tāpēc, ka drošība nav apdraudēta. Rust īpašumtiesību sistēma ļauj kompilatoram garantēt koda drošību un aizsardzību no atmiņas kļūdām, piemēram, nokarenām norādēm un atmiņas noplūdēm.
Rust nodrošina arī viedos rādītājus ar papildu metadatiem un iespējām, kas pārsniedz tradicionālos rādītājus. Viedās norādes ir noderīgas, lai novērstu atmiņas noplūdes.
Kas ir viedie rādītāji rūsā?
Viedās norādes ir viena no Rust datu tipi kas paplašina parasto rādītāju iespējas, piedāvājot papildu funkcijas, piemēram, pārslogotus operatorus, iznīcinātājus un automātisko atmiņas pārvaldību.
Rust izmanto struktūras, lai izpildītu viedos rādītājus; tādējādi viedajiem rādītājiem ir arī īpašumtiesību iespējas.
Saistot atmiņu, kurā ir dinamiski piešķirtie dati, ar viedajiem rādītājiem, tie tiek automātiski noņemti. Viedie norādes nodrošina funkcionalitāti, lai kontrolētu
Rūsas objekta kalpošanas laiks, padarot tos parocīgus, lai novērstu tādas kļūdas kā nulles rādītāja atsauces atcelšana un atmiņas noplūdes, kas ir populāras citās zema līmeņa valodās, piemēram, C un C++.Viedo rādītāju izmantošanas priekšrocības
Šeit ir dažas viedo rādītāju izmantošanas priekšrocības:
- Automātiskā atmiņas pārvaldība: Viedie norādes nodrošina automātisku atmiņas pārvaldību, tostarp piešķiršanu un atdalīšanu, atšķirībā no manuālās atmiņas pārvaldības ar parastajiem rādītājiem.
- Uzlabota drošība: viedie norādes nodrošina īpašumtiesību semantiku, nodrošinot, ka tikai viens īpašnieks var piekļūt resursiem vienā reizē, novēršot datu izsekošanu un ar vienlaicību saistītas kļūdas.
- Elastīgums: Rust nodrošina vairākus viedos rādītājus, katrs ar savu komplektu īpašumtiesību semantika lai elastīgi rakstītu drošu kodu.
- Resursu pārvaldība: varat izmantot viedos rādītājus, lai pārvaldītu citus resursus, piemēram, failu apdarinātājus un tīkla ligzdas, iekapsulējot resursus. viedajā rādītājā, kas atvieglo to dzīves cikla pārvaldību un nodrošina, ka tie ir pareizi aizvērti un pēc tam atbrīvoti izmantot.
- Uzlabota veiktspēja: Viedās norādes palīdz uzlabot veiktspēju, samazinot atmiņas kopēšanu un piešķiršanu — viedo rādītāju izmantošanas samazināts atmiņas apjoms palielina veiktspēju.
Viedie rādītāji ir piemēroti vidēja un liela izmēra lietojumprogrammām, īpaši gadījumos, kad atmiņas pārvaldība ir kritiska.
Viedo rādītāju veidi
Rust nodrošina vairāku veidu viedos rādītājus, tostarp Kaste, Rc, RefCell, un Mutex.
1. Box viedais rādītājs
The Kaste Viedais rādītājs ir Rust vienkāršākais un visizplatītākais viedais rādītājs. The Kaste viedais rādītājs palīdz piešķirt vērtības kaudzē un izveido lodziņu, kas nodrošina pieejamību.
The Kaste Viedais rādītājs ir ērts dinamiskai atmiņas piešķiršanai, ja jums ir jānodrošina, lai atmiņa tiktu automātiski atbrīvota, ja rādītāji ir ārpus darbības jomas.
Lūk, kā jūs varat deklarēt un izmantot a Kaste rādītājs:
fngalvenais(){
// jauns lodziņa viedā rādītāja gadījums
ļaut x = Kaste::jauns(5);
println!(x)
}
The Kaste tips ir daļa no Rust's prelūdijas, tāpēc jums nebūs jāimportē tips, atšķirībā no citiem viedajiem rādītājiem.
The x mainīgais ir a Kaste rādītājs, kas norāda uz 5 veselu skaitļu vērtību. Rust piešķir atmiņu kaudzes vērtībai un automātiski atdala vietu, ja mainīgais ir ārpus darbības jomas.
2. Rc viedais rādītājs
The Rc (Reference Counted) viedais rādītājs nodrošina funkcionalitāti kopīgu īpašumtiesību vērtību izveidei. The Rc viedās norādes izseko atsauču skaitu uz vērtību un atdala vērtību, ja pēdējā atsauce ir ārpus darbības jomas.
The Rc viedais rādītājs ir ērts, ja jums ir nepieciešams koplietot īpašumtiesības uz vērtību, kas nodrošina pieejamību vairākās programmas daļās.
Lai deklarētu an Rc viedo rādītāju, jūs importēsit Rc struct no standarta bibliotēkas, paziņojiet par jaunu Rc rādītājs ar jauns funkciju un klonējiet rādītāja mainīgo ar klons mainīgs.
izmantot std:: rc:: Rc;
fngalvenais() {
// jauns RC viedā rādītāja gadījums
ļaut x = Rc:: jauns(5);
ļaut y = Rc:: klons(&x);
println!("x = {}, y = {}", x, y);
}
The x mainīgais ir Rc rādītāja mainīgais un y mainīgais ir klons ar piekļuvi vērtībai atmiņā. Atsauces skaits ir divi, un vērtība tiek izņemta no atmiņas, ja mainīgie ir ārpus darbības jomas.
3. RefCell viedais rādītājs
The RefCell viedais rādītājs nodrošina iekšējo mainīgumu, kas ļauj nemainīgām un mainīgām atsaucēm pastāvēt līdzās, ja vien noteiktā laikā ir viena mainīga atsauce.
The RefCell viedais rādītājs ir ērts, mainot vērtības, kas pieder mainīgām atsaucēm.
The Refcell funkcija nav daļa no Rust priekšspēles, tāpēc jums būs jāimportē struktūra no standarta bibliotēkas, lai izmantotu viedo rādītāju.
izmantot std:: šūna:: RefCell;
fngalvenais(){
// jauns Refcell viedā rādītāja gadījums
ļaut x = RefCell:: new(5);ļaut y = x.aizņemties();
ļaut z = x.aizņemties_mut();println!("y = {}", *y);
println!("z = {}", *z);
}
The Refcell viedais rādītājs satur vērtību un y mainīgais ir nemainīga atsauce uz vērtību. The aizņemties_mut funkcija izveido mainīgu vērtības atsauci.
Programma ir droša, ja vienlaikus ir tikai viena mainīga atsauce.
4. Mutex viedais rādītājs
The Mutex viedais rādītājs nodrošina savstarpējus izslēgšanas gadījumus. The Mutex viedais rādītājs ir ērts, lai sinhronizētu piekļuvi vērtībām vairākos pavedienos vienlaicīgās programmās.
The Mutex viedais rādītājs nodrošina savstarpēju izslēgšanu, lai nodrošinātu, ka vērtībai var piekļūt tikai viens pavediens, vienlaikus novēršot datu izsekošanu.
Jums būs jāimportē Mutex strukturēt un izveidot jaunu gadījumu ar jauns izmantot funkciju Mutex Viedais rādītājs rūsā.
izmantot std:: sinhronizācija:: Mutex;
fngalvenais() {
// jauns mutex rādītāja gadījums
ļaut skaitītājs = Mutex:: new(0);{
ļautmut num = counter.lock().unwrap();
*skaitlis += 1;
}
println!("Rezultāts: {}", *counter.lock().unwrap());
}
The skaitītājs mainīgais ir jaunais Mutex piemēram. The galvenais funkcija iegūst mutex bloķēšanu ar slēdzene metode Mutex piemēram. Slēdzene ļauj droši mainīt skaitītāja vērtību pirms slēdzenes atbrīvošanas un vērtības drukāšanas.
The Mutex tips garantē, ka tikai viens pavediens var piekļūt koplietotajiem resursiem (šajā gadījumā skaitītājs mainīgais) un vienlaikus mainīt tā vērtību. Savstarpēja izslēgšana nodrošina vienlaicīgu piekļuvi koplietotajiem resursiem, lai novērstu datu izsekošanu un citas vienlaicības problēmas.
Rust īpašumtiesību modelis garantē atmiņas drošību
Viedie norādes ir viena no Rust pieejām atmiņas drošībai un elastībai. Rust īpašumtiesību modelis nodrošina, ka programmas kompilēšanas laikā droši izmanto atmiņu ar aizņemšanās pārbaudītāju.
Aizņemšanās pārbaudītājs ir svarīga Rust īpašumtiesību modeļa iezīme, kas ievieš stingrus atmiņas pieejamības un modifikācijas noteikumus.