Rust · Intermediário · Inglês · Técnico
Box
Ponteiro inteligente que guarda um valor no heap e é seu único dono. Quando o Box sai de escopo, o valor é liberado.
Onde usar
Usado para tipos recursivos, valores grandes e trait objects como Box<dyn Trait>. Sem ele, um tipo que contém a si mesmo teria tamanho infinito.
Em código
enum Lista {
Cons(i32, Box<Lista>),
Fim,
}
use Lista::{Cons, Fim};
let fim = Box::new(Fim);
let l = Cons(1, fim);Exemplos
Wrap the recursive field in a Box.
Envolva o campo recursivo em um Box.
We return a Box<dyn Error> here.
Aqui devolvemos um Box<dyn Error>.
Cuidado
Não é um ponteiro compartilhado: Box tem um dono só, e para vários donos se usa Rc ou Arc.
Sinônimos
ponteiro no heap
Origem
Do inglês box, 'caixa'.