Müssen wir einen Destruktor für eine verknüpfte Liste manuell erstellen?

Ich leseLearning Rust mit zu vielen verknüpften Listen und ich bin verwirrt darüber, warum die verknüpfte Liste (Stapel) braucht einen Destruktor.

Ich denke, wenn der Listenwert außerhalb des Bereichs liegt, werden die Liste selbst und alle Knoten bereinigt. Ist es nur zur Demonstration?

Ich versuche die Version mit und ohne manuellen Destruktor zu vergleichen, und ich fand, dass der "ohne Destruktor" eine bessere Leistung hat:

for _ in 1..30000000 {
        let mut list = List::new();
        list.push(1);
        assert_eq!(list.pop(), Some(1));
}

Mit manuellem Destruktor:

real    0m11.216s
user    0m11.192s
sys     0m 0.020s

Ohne manuellen Destruktor:

real    0m9.071s
user    0m9.044s
sys     0m0.004s

Antworten auf die Frage(4)

Ihre Antwort auf die Frage