capypad
0 Tage Serie
rust / beginner
Snippet

Box<T> für Heap-Allokation

Box<T> alloziert einen Wert auf dem Heap statt auf dem Stack. Es ist nützlich, wenn du einen Container mit bekannter Größe mit stabiler Größe brauchst, oder wenn Rekursion eine Indirektion erfordert. Box::new() erstellt die Box und platziert den Wert darin. Dereferenzierung mit * greift auf den enthaltenen Wert zu. Boxes implementieren automatisch Deref und Drop, was sie wie reguläre Referenzen wirken lässt, aber mit gespeichertem Heap-Speicher.

snippet.rs
rust
1
fn main() {\n let boxed: Box<i32> = Box::new(42);\n let value = *boxed;\n \n println!("Boxed value: {}, dereferenced: {}", boxed, value);\n \n let point = Box::new((0, 0));\n println!("Point: ({}, {})", point.0, point.1);\n \n let mut boxed_slice = Box::new([1, 2, 3, 4, 5]);\n boxed_slice[0] = 10;\n println!("Modified slice: {:?}", boxed_slice);\n}
Erklärung
1
Box<i32>
Typannotation für eine Box, die ein i32 auf dem Heap enthält
2
Box::new(42)
Erstellt eine Box und alloziert den Wert 42 auf dem Heap
3
*boxed
Dereferenzierungsoperator entnimmt den Wert aus der Box
4
Box::new((0, 0))
Box kann jeden Typ enthalten, einschließlich Tupeln
5
boxed_slice[0] = 10
Box<T> wobei T ein Array ist, erlaubt veränderliche Indizierung
6
println!("...{:?}", boxed_slice)
:? Debug-Formatierung gibt Array-Inhalte aus