Box
Box 是具有所有權的指向堆積上的資料的指標:
fn main() { let five = Box::new(5); println!("five: {}", *five); }
Box<T> 會實作 Deref<Target = T>。也就是說,您可以直接在 Box<T> 上透過 T 呼叫方法。
Box就像是 C++ 中的std::unique_ptr,兩者的差別在於Box不會是空值。- 上面的範例使用
Deref,因此println!陳述式甚至可以省略*。 - 在以下情況下,您可以使用
Box:- 編譯時遇到不知道大小為何的型別,但 Rust 編譯器需要知道確切大小。
- 想要轉移大量資料的所有權。為避免在堆疊上複製大量資料,請改將資料儲存在
Box的堆積上,這樣系統就只會移動指標。