Dispatch dinâmico x estático
Os métodos são executados de duas maneiras:
- static dispatch - quando o tipo da instância é conhecido, temos conhecimento direto de qual função chamar.
- dynamic dispatch - quando o tipo da instância não é conhecido precisamos descobrir uma maneira de chamar a função correta.
Os tipos de trait &dyn MinhaTrait
nos permite a habilidade de trabalhar com instâncias de objetos indiretamente usando dispatch dinâmico.
Quando o dispatch dinâmico é usado, o Rust irá encorajar você a pôr o dyn
antes do seu tipo da trait, assim os outros ficarão cientes.
Detalhes da memória:
- O dispatch dinâmico é um pouco mais lento por causa da procura que o ponteiro realiza para localizar a verdadeira chamada da função.