Ahora que estamos un poco más familiarizados con el uso de traits hablemos de uno en particular que nos ayudará a poder limpiar nuestro servidor después de terminar de hacer cada petición.

Por el momento tenemos un proyecto que cuando lo corremos nos da un servidor multiproceso, también obtenemos algunas advertencias sobre el workers, id y thread, que no estamos utilizando de una manera directa que nos recuerda que no estamos limpiando nada. Al momento que queremos apagarlo, usamos la técnica que nunca falla Ctrl + C en nuestra terminal, eso hace que apaguemos nuestro servidor, por consecuencia, termina todo los subprocesos que se encuentran activos.

En este tipo de casos es cuando podríamos usar el trait Drop, o mejor conocido como Destructor, solo tiene un método: drop, que se llama automáticamente cuando un objeto sale del alcance. El uso principal del rasgo Drop es liberar los recursos que posee la instancia.

Solo hay dos métodos que se pueden usar por Drop:

fn drop(&mut self)

Este método es llamado principalmente cuando el valor está fuera del scope.

Y por otro lado, tenemos el método Panic. que automáticamente destruye el proceso al momento de ser llamado.

Dentro de nuestro proyecto, ¿por qué se podría implementar Drop? Ya que generalmente se trabaja con structs, dentro de nuestro proyecto tenemos un tamaño y contador de procesos, podemos hacer uso de Drop, para hacer que ese contador baje a cero, cuando esto suceda, pueda apagar y limpiar nuestro proceso. Esto haría que nuestro servidor se apague y se limpie de una manera elegante.

Intentan implementarlo en tu proyecto, de qué manera crees que podamos apagar el servidor, como lo tenemos hasta el momento.

Deja en tus comentarios en qué otro tipo de situaciones podemos hacer uso de este trait.