Otimização de Nicho
#[derive(Debug)] enum List<T> { Cons(T, Box<List<T>>), Nil, } fn main() { let lista: List<i32> = List::Cons(1, Box::new(List::Cons(2, Box::new(List::Nil)))); println!("{lista:?}"); }
Uma Box
não pode estar vazia, portanto o ponteiro é sempre válido e não nulo (null
). Isto permite que o compilador otimize o layout da memória: