La Memoria
I programmi Rust hanno 3 zone di memoria che possono contenere dati:
- memoria programma - Per i dati che hanno dimensione fissa e statici (cioè sempre accessibile per tutta la vita del programma).
Considera il testo nel programma (es. "Hello World!"): i byte di questo testo sono letti da un solo posto e quindi possono essere memorizzati in questo spazio. I compilatori eseguono molte ottimizzazioni su questi dati, e sono anche molto veloci da usare perchè la posizione è conosciuta e fissa.
- memoria stack - Per i dati che sono dichiarati come variabili dentro una funzione.
L'indirizzo di questa zona di memoria non cambia mai per la durata della funzione; grazie a questa proprietà, il compilatore può ottimizzare il codice e quindi accedere più velocemente ai dati sullo stack.
- memoria heap - Per i dati che vengono creati mentre l'applicazione sta girando.
In questa zona è possibile ingrandire, rimpicciolire, spostare, aggiungere o togliere dati; per via di questa natura dinamica è generalmente considerata più lenta nell'utilizzo, ma permette una enorme flessibilità nell'uso della memoria. Quando inseriamo dati in questa regione, parliamo di allocazione, mentre quando rimuoviamo dati avviene una deallocazione.