Box
Box Ă© um ponteiro owned para dados no heap:
fn main() { let cinco = Box::new(5); println!("cinco: {}", *cinco); }
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_ptrem 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
Boxno heap e apenas o ponteiro Ă© movido.