MĂ©todos

Rust permite que vocĂȘ associe funçÔes aos seus novos tipos. VocĂȘ faz isso com um bloco impl:

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Os argumentos self especificam o “receptor” - o objeto em que o mĂ©todo age. Existem vĂĄrios receptores comuns para um mĂ©todo:

  • &self: pega emprestado o objeto do chamador como uma referĂȘncia compartilhada e imutĂĄvel. O objeto pode ser usado novamente depois.
  • &mut self: pega emprestado o objeto do chamador como uma referĂȘncia Ășnica e mutĂĄvel. O objeto pode ser usado novamente depois.
  • self: toma posse do objeto e o move do chamador. O mĂ©todo se torna o proprietĂĄrio do objeto. O objeto serĂĄ descartado (desalocado) quando o mĂ©todo retorna, a menos que sua ownership (posse) seja explicitamente transmitida. Posse completa nĂŁo significa automaticamente mutabilidade.
  • mut self: o mesmo que acima, mas o mĂ©todo pode modificar o objeto.
  • Sem receptor: isso se torna um mĂ©todo estĂĄtico (static) no struct. Normalmente usado para criar construtores que, por convenção, sĂŁo chamados new.

Speaker Notes

This slide should take about 8 minutes.

Pontos Chave:

  • Pode ser Ăștil introduzir mĂ©todos comparando-os com funçÔes.
    • MĂ©todos sĂŁo chamados em uma instĂąncia de um tipo (como struct ou enum), o primeiro parĂąmetro representa a instĂąncia como self.
    • Desenvolvedores podem optar por usar mĂ©todos para aproveitar a sintaxe do receptor do mĂ©todo e ajudar a mantĂȘ-los mais organizados. Usando mĂ©todos, podemos manter todo o cĂłdigo de implementação em um local previsĂ­vel.
  • Destaque o uso da palavra-chave self, um receptor de mĂ©todo.
    • Mostre que Ă© um termo abreviado para self: Self e talvez mostre como o nome da struct tambĂ©m poderia ser usado.
    • Explique que Self Ă© um alias de tipo para o tipo em que o bloco impl estĂĄ e pode ser usado em qualquer outro lugar no bloco.
    • Observe como self Ă© usado como outras structs e a notação de ponto pode ser usada para se referir a campos individuais.
    • Este pode ser um bom momento para demonstrar como &self difere de self modificando o cĂłdigo e tentando executar finish duas vezes.
    • AlĂ©m das variantes de self, tambĂ©m existem tipos especiais de wrapper que podem ser tipos de receptores, como Box<Self>.