Hukommelse og pointers
Teori
Når et program startes bliver der afsat hukommelse til globale variabler (global/static storage) og selve koden til programmet (code/text storage).

Derudover kan programmet oprette data på stack og heap:
- Stack bruges til lokale variabler og bliver automatisk ryddet op (LIFO: Last In First Out).
- Heap er ikke begrænset til lokale variabler/LIFO og er dermed mere generel, men kræver mere at organisere (bl.a. allokering/deallokering).
I Rust klares de fleste heap udfordringer vha. ejerskab. Fejl som hukommelseslækage (memory leak) undgås derfor nemmere, men kan stadig forekomme se fx kap. 15.6.
Pointers
Bruges til at pege på et sted i hukommelse. [1] Referencer er en bestemt type af pointers.

Box og Rc er pointers der kan bruges til at allokere data på heap.
Boxtil normal ejerskab (1 ejer).- I modsætning til en reference så overdrager
Boxejerskabet, hvilket er væsentligt i bl.a. funktioner.
- I modsætning til en reference så overdrager
Rc(Reference Count) bruges til flere ejere.- Er kun mutabel med flere ejere sammen med
RefCell.
- Er kun mutabel med flere ejere sammen med
NoteEksempel
// Gemmer variabel og reference/pointer på stack
let a = 5;
let p1 = &a;
// Allokering på heap med smart pointers Box og Rc (pointers p2 & p3 gemmes i stack)
let mut p2 = Box::new(10);
let p3 = Rc::new(15);
// For at lave om på værdien som p2 peger på bruges * - såkaldt dereference
*p2 += 1; Referencer
[1]
S. Klabnik og C. Nichols, “15. Smart Pointers”, i The Rust Programming Language, No Starch Press. Tilgængelig hos: https://doc.rust-lang.org/stable/book/ch15-00-smart-pointers.html