Introdução à linguagem de programação Rust no Android

A Plataforma Android oferece suporte ao desenvolvimento de componentes nativos do SO em Rust, uma linguagem de programação de sistemas moderna com garantias de segurança de memória e desempenho equivalente ao C/C++. O Rust usa uma combinação de verificações durante a compilação, que aplicam o ciclo de vida e a propriedade do objeto, e verificações durante a execução que garantem acessos válidos à memória, eliminando a necessidade de um coletor de lixo.

O Rust oferece uma série de recursos de linguagem modernos que permitem aos desenvolvedores serem mais produtivos e confiantes em relação ao próprio código:

  • Programação simultânea segura: a facilidade com que os usuários podem escrever um código eficiente e seguro para linhas de execução deu origem ao slogan do Rust de Simultaneidade sem medo (link em inglês).
  • Sistema de tipo expressivo: o Rust ajuda a evitar bugs de programação lógica, permitindo tipos altamente expressivos, como wrappers Newtype e variantes de tipo enumerado com conteúdo.
  • Verificações durante a compilação mais eficientes: quanto mais bugs detectados durante a compilação, maior a confiança do desenvolvedor de que, quando o código for compilado corretamente, ele funcionará conforme o esperado.
  • Framework de testes integrado: o Rust oferece um framework de teste integrado em que testes de unidade podem ser realizados com a implementação que será testada, facilitando a inclusão de testes de unidade.
  • Aplicação do tratamento de erros: as funções com falhas recuperáveis podem retornar um tipo de resultado (link em inglês), que será uma variante bem-sucedida ou uma variante de erro. O compilador exige que os autores de chamadas verifiquem e processem a variante de erro de uma enumeração Result retornada por uma chamada de função. Isso reduz o potencial de bugs resultantes de falhas não processadas.
  • Inicialização: o Rust exige que todas as variáveis sejam inicializadas em um membro legal do tipo dela antes de serem usadas, evitando uma inicialização não intencional com um valor não seguro.
  • Processamento de números inteiros mais seguro: todas as conversões de tipo inteiro são casts explícitos. Os desenvolvedores não podem fazer casts acidentalmente durante uma chamada de função ao atribuir a uma variável ou ao tentar fazer aritmética com outros tipos. A verificação de overflow é ativada por padrão para o Rust no Android, o que exige que as operações de overflow sejam explícitas.

Para saber mais, consulte a série de postagens do blog sobre o suporte ao Rust no Android: