O Trait Drop
Valores que implementam Drop
podem especificar o cĂłdigo a ser executado quando saem do escopo:
Speaker Notes
This slide should take about 8 minutes.
- Observe que
std::mem::drop
nĂŁo Ă© o mesmo questd::ops::Drop::drop
. - Os valores sĂŁo descartados automaticamente quando saem do escopo.
- Quando um valor Ă© descartado, se ele implementa
std::ops::Drop
então sua implementaçãoDrop::drop
serå chamada. - Todas as seus campos serão descartadas também, independentemente de implementar
Drop
. std::mem::drop
Ă© apenas uma função vazia que recebe qualquer valor. A importĂąncia Ă© que ela assume a ownership do valor, entĂŁo no final de seu escopo ele Ă© descartado. Isso torna uma maneira conveniente de descartar explicitamente valores mais cedo do que eles sairiam do escopo.- Isso pode ser Ăștil para objetos que fazem algum trabalho em
drop
: liberando travas, fechando arquivos, etc.
- Isso pode ser Ăștil para objetos que fazem algum trabalho em
Pontos de discussĂŁo:
- Por que
Drop::drop
nĂŁo recebeself
?- Resposta curta: Se recebesse,
std::mem::drop
seria chamado no final do bloco, resultando em outra chamada paraDrop::drop
ocasionando um estouro de pilha.
- Resposta curta: Se recebesse,
- Tente substituir
drop(a)
pora.drop()
.