Allocare memoria nello Heap in Rust con Box

Mattepuffo's logo
Allocare memoria nello Heap in Rust con Box

Allocare memoria nello Heap in Rust con Box

Rust di default alloca tutti i valori e funzioni nello Stack.

Appena una variabile/funzione esce dal suo scope, viene cancellata immediatamente e automaticamente.

Questo è uno dei tanti motivi che rende Rust più veloce e sicuro di tanti altri linguaggi.

Ovviamente possiamo sempre usare i pointer e gli smart-pointer per allcoare memoria nello Heap.

Box serve proprio a questo; in sostanza è uno smart-pointer che alloca un valore di tipo T nello Heap.

Appena il box esce dal suo scope, viene cancellato.

Qui sotto vediamo un esempio con qualche commento:

fn main() {
    let my_number = 1;
    print_item(my_number);
    // POSSIAMO LANCIARE DUE VOLTE LA FUNZIONE IN QUANTO LA SECONDA CHIAMATA È UNA COPIA
    print_item(my_number);

    let my_box = Box::new(1);
    // BISOGNA USARE IL clone() PERCHÈ BOX NON È UNA COPIA, E SENZA ANDREBBE IN ERRORE
    print_item(my_box.clone());
    print_item(my_box);
}

// STAMPA IL VALORE PASSATO COME ARGOMENTO E POI LO CANCELLA DALLA MEMORIA
fn print_item<T: std::fmt::Display>(item: T) {
    println!("{}", item);
}

Ovviamente è un esempio basico; con Box possiamo fare molte più cose, ma può esservi di aiuto per iniziare ad usarlo.

Enjoy!


Condividi

Commentami!