Inteligentní ukazatele mají další výhody oproti běžným ukazatelům. Zde je vše, co potřebujete vědět o chytrých ukazatelích v Rustu.

Správa paměti je jednou z předností společnosti Rust, zejména proto, že bezpečnost není ohrožena. Systém vlastnictví Rust umožňuje kompilátoru zaručit bezpečnost kódu a osvobození od chyb paměti, jako jsou visící ukazatele a úniky paměti.

Rust také poskytuje inteligentní ukazatele s dalšími metadaty a funkcemi nad rámec tradičních ukazatelů. Inteligentní ukazatele jsou užitečné pro řešení úniků paměti.

Co jsou inteligentní ukazatele v rezu?

Inteligentní ukazatele jsou jedním z Datové typy Rustu který rozšiřuje možnosti běžných ukazatelů tím, že nabízí další funkce, jako jsou přetížené operátory, destruktory a automatická správa paměti.

Rust využívá struktury k provádění inteligentních ukazatelů; inteligentní ukazatele tedy mají také možnosti vlastnictví.

Když propojíte paměť obsahující dynamicky alokovaná data s inteligentními ukazateli, dojde k jejich automatickému uvolnění. Inteligentní ukazatele poskytují funkce pro ovládání

instagram viewer
Životnost Rustova předmětu, díky čemuž jsou užitečné při prevenci chyb, jako je dereferencování nulových ukazatelů a úniky paměti, které jsou oblíbené v jiných nízkoúrovňových jazycích, jako je C a C++.

Výhody používání inteligentních ukazatelů

Zde jsou některé výhody používání chytrých ukazatelů:

  1. Automatická správa paměti: Inteligentní ukazatele poskytují automatickou správu paměti, včetně alokace a dealokace, na rozdíl od manuální správy paměti s běžnými ukazateli.
  2. Vylepšená bezpečnost: Inteligentní ukazatele prosazují sémantiku vlastnictví, zajišťují, že ke zdrojům může mít přístup pouze jeden vlastník najednou, a zabraňují sledování dat a chybám souvisejícím se souběžností.
  3. Flexibilita: Rust poskytuje několik inteligentních ukazatelů, každý se svou sadou sémantika vlastnictví pro flexibilní psaní bezpečného kódu.
  4. Správa zdrojů: Inteligentní ukazatele můžete použít ke správě dalších zdrojů, jako jsou manipulátory souborů a síťové sokety, zapouzdřením zdrojů v rámci chytrého ukazatele, který usnadňuje správu jejich životního cyklu a zajišťuje, že jsou správně uzavřeny a poté uvolněny použití.
  5. Zlepšený výkon: Inteligentní ukazatele pomáhají zlepšit výkon tím, že omezují kopírování a přidělování paměti – menší nároky na paměť z používání chytrých ukazatelů mají za následek vyšší výkon.

Inteligentní ukazatele jsou vhodné pro středně velké až velké aplikace, zejména v případech, kdy je kritická správa paměti.

Typy inteligentních ukazatelů

Rust poskytuje několik typů inteligentních ukazatelů, včetně Box, Rc, RefCell, a Mutex.

1. Inteligentní ukazatel Box

The Box Smart Pointer je nejjednodušší a nejběžnější chytrý ukazatel Rust. The Box inteligentní ukazatel pomáhá alokovat hodnoty na hromadě a vytváří ohraničený ukazatel pro usnadnění.

The Box Inteligentní ukazatel je užitečný pro dynamickou alokaci paměti, když potřebujete zajistit, aby se paměť automaticky uvolnila, když jsou ukazatele mimo rozsah.

Zde je návod, jak můžete deklarovat a používat a Box ukazatel:

fnhlavní(){

// nová instance inteligentního ukazatele boxu
nechat x = Box::Nový(5);
println!(X)

}

The Box typ je součástí Rustovy předehry, takže na rozdíl od jiných chytrých ukazatelů nebudete muset typ importovat.

The X proměnná je a Box ukazatel ukazující na hodnotu 5 celých čísel. Rust alokuje paměť pro hodnotu na haldě a automaticky uvolní, když je proměnná mimo rozsah.

2. Inteligentní ukazatel Rc

The Rc (Reference Counted) inteligentní ukazatel poskytuje funkce pro vytváření hodnot sdíleného vlastnictví. The Rc inteligentní ukazatele sledují počet odkazů na hodnotu a uvolňují hodnotu, když je poslední odkaz mimo rozsah.

The Rc inteligentní ukazatel je užitečný, když potřebujete sdílet vlastnictví hodnoty pro přístupnost ve více částech vašeho programu.

Prohlásit an Rc chytrý ukazatel, budete importovat Rc struct ze standardní knihovny, deklarujte nový Rc ukazatel s Nový a naklonujte proměnnou ukazatele pomocí klon variabilní.

použití std:: rc:: Rc;

fnhlavní() {

// nová instance chytrého ukazatele RC
nechat x = Rc:: new(5);
nechat y = Rc:: klon(&x);

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

The X proměnná je Rc proměnná ukazatele a y proměnná je klon s přístupem k hodnotě v paměti. Počet odkazů je dva a hodnota se uvolní z paměti, když jsou proměnné mimo rozsah.

3. RefCell Smart Ukazatel

The RefCell inteligentní ukazatel poskytuje vnitřní proměnlivost, která umožňuje koexistenci neměnných a proměnných referencí, pokud existuje jedna proměnná reference za daný čas.

The RefCell inteligentní ukazatel je užitečný při mutaci hodnot vlastněných měnitelnými odkazy.

The Refcell Funkce není součástí Rustovy předehry, takže budete muset importovat strukturu ze standardní knihovny, abyste mohli použít inteligentní ukazatel.

použití std:: cell:: RefCell;

fnhlavní(){

// nová instance chytrého ukazatele Refcell
nechat x = RefCell:: new(5);

nechat y = x.půjčit();
nechat z = x.půjčit_mut();

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

}

The Refcell inteligentní ukazatel obsahuje hodnotu a y proměnná je neměnný odkaz na hodnotu. The půjčit_mut funkce vytvoří proměnlivý odkaz na hodnotu.

Program je bezpečný, pokud existuje vždy pouze jeden proměnlivý odkaz.

4. Inteligentní ukazatel Mutex

The Mutex inteligentní ukazatel poskytuje vzájemné vyloučení. The Mutex inteligentní ukazatel je užitečný pro synchronizaci přístupu k hodnotám napříč více vlákny v souběžných programech.

The Mutex inteligentní ukazatel poskytuje vzájemné vyloučení, aby bylo zajištěno, že k hodnotě bude mít přístup pouze jedno vlákno, a zároveň zabrání trasování dat.

Budete muset importovat Mutex struct a vytvořte novou instanci s Nový funkce k použití Mutex Chytrý ukazatel v rezu.

použití std:: synchronizace:: Mutex;

fnhlavní() {

// nová instance ukazatele mutexu
nechat counter = Mutex:: new(0);

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

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

The čelit proměnná je nová Mutex instance. The hlavní funkce získá zámek na mutex s zámek metoda Mutex instance. Zámek umožňuje bezpečnou úpravu hodnoty počítadla před uvolněním zámku a vytištěním hodnoty.

The Mutex typ zaručuje, že ke sdíleným prostředkům má přístup pouze jedno vlákno (v tomto případě čelit proměnná) a postupně upravovat její hodnotu. Vzájemné vyloučení zajišťuje, že souběžný přístup ke sdíleným zdrojům je serializován, aby se zabránilo trasování dat a dalším problémům se souběžností.

Vlastnický model Rust zaručuje bezpečnost paměti

Inteligentní ukazatele jsou jedním z přístupů společnosti Rust k bezpečnosti a flexibilitě paměti. Vlastnický model Rust zajišťuje, že programy používají paměť bezpečně pomocí nástroje pro kontrolu výpůjček v době kompilace.

Půjčovací kontrola je zásadním prvkem vlastnického modelu Rust, který prosazuje přísná pravidla pro přístupnost a úpravy paměti.