Funções Genéricas
Rust suporta genéricos, o que permite abstrair algoritmos ou estruturas de dados (como ordenação ou uma árvore binária) sobre os tipos usados ou armazenados.
Speaker Notes
This slide should take about 5 minutes.
-
Rust infere um tipo para T com base nos tipos dos argumentos e valor de retorno.
-
Isto é semelhante aos templates C++, mas Rust compila parcialmente a função genérica imediatamente, de modo que a função deve ser válida para todos os tipos que correspondem às restrições. Por exemplo, tente modificar
pick
para retornareven + odd
sen == 0
. Mesmo que apenas a instânciapick
com inteiros seja usada, Rust ainda a considera inválida. C++ permitiria que você fizesse isso. -
O código genérico é transformado em código não genérico com base nos locais de chamada. Esta é uma abstração sem custo: você obtém exatamente o mesmo resultado como se tivesse codificado as estruturas de dados sem a abstração.