¿Necesitamos crear manualmente un destructor para una lista vinculada?
Estoy leyendoAprendizaje de oxidación con demasiadas listas enlazadas y estoy confundido acerca de por qué la lista vinculada (pila)necesita un destructor.
Creo que cuando el valor de la lista está fuera del alcance, la lista misma y todos los nodos se limpiarían. ¿Es solo para demostración?
Intento comparar la versión con y sin destructor manual, y descubrí que el "sin destructor" tiene un mejor rendimiento:
for _ in 1..30000000 {
let mut list = List::new();
list.push(1);
assert_eq!(list.pop(), Some(1));
}
Con destructor manual:
real 0m11.216s
user 0m11.192s
sys 0m 0.020s
Sin destructor manual:
real 0m9.071s
user 0m9.044s
sys 0m0.004s