¿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

Respuestas a la pregunta(2)

Su respuesta a la pregunta