Box
Box
Ă© um ponteiro owned para dados no heap:
fn main() { let five = Box::new(5); println!("cinco: {}", *five); }
Box<T>
implementa Deref<Target = T>
, o que significa que vocĂȘ pode chamar mĂ©todos de T
diretamente em um Box<T>
.
Box
Ă© parecido comstd::unique_ptr
em C++, exceto que ele Ă© garantidamente nĂŁo nulo.- No exemplo acima, vocĂȘ pode atĂ© remover o
*
na instruçãoprintln!
graças aoDeref
. - Uma
Box
Ă© Ăștil quando vocĂȘ:- Tem um tipo cujo tamanho nĂŁo estĂĄ disponĂvel em tempo de compilação, mas o compilador Rust precisa saber o tamanho exato.
- Precisa transferir o ownership de um grande volume de dados. Ao invés de copiar grandes volumes de dados na pilha, eles são armazenados usando uma
Box
no heap e apenas o ponteiro Ă© movido.