Nicht immer ist es möglich Speicher zu auf dem Stack zu verwalten
Speicherbereich kann zu begrenzt sein
Instanzen müssen an vielen Stellen referenziert und verändert werden
Für diesen Zweck gibt es den Box-Typ
Bei der Instanziierung wird ein Speicherbereich auf dem Heap allokiert
Wird die Box nicht mehr gebraucht, dann wird der Bereich wieder freigegeben
fn main() {
// Object auf dem Heap anlegen
let heap_var: Box<[u32]> = Box::new([42u32; 4096]);
// Dereferenzierung für einen Zugriff
println!("heap_var = {}", heap_var[0]);
}
Gerade bei veränderlichen Listen sind die statischen Arrays hinderlich
Hierfür kann der generische Datentyp Vec genutzt werden
fn main() {
let integer_array = vec![1, 2, 3];
// explizt typisiert
let integer_array: Vec<i32> = vec![1, 2, 3];
// Für die Veränderung einer Liste, muss diese wieder mit `mut` gekennzeichnet werden
let mut list = vec![];
list.push(1);
list.push(2);
println!("list = {:?}", list);
}