Box

Box Ă© um ponteiro owned para dados no heap:

fn main() {
    let five = Box::new(5);
    println!("cinco: {}", *five);
}
5StackHeapfive

Box<T> implementa Deref<Target = T>, o que significa que vocĂȘ pode chamar mĂ©todos de T diretamente em um Box<T>.

  • Box Ă© parecido com std::unique_ptr em C++, exceto que ele Ă© garantidamente nĂŁo nulo.
  • No exemplo acima, vocĂȘ pode atĂ© remover o * na instrução println! graças ao Deref.
  • 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.