Introdução ao Android Rust

A plataforma Android oferece suporte para o desenvolvimento de componentes nativos do sistema operacional em Rust, uma moderna linguagem de programação de sistemas que oferece garantias de segurança de memória com desempenho equivalente a C/C++. Rust usa uma combinação de verificações em tempo de compilação que impõem a vida útil e a propriedade do objeto, e verificações em tempo de execução que garantem acessos válidos à memória, eliminando assim a necessidade de um coletor de lixo.

Rust fornece uma variedade de recursos de linguagem modernos que permitem aos desenvolvedores serem mais produtivos e confiantes em seu código:

  • Programação simultânea segura - A facilidade com que isso permite aos usuários escrever código eficiente e seguro para threads deu origem ao slogan Fearless Concurrency de Rust.
  • Sistema de tipos expressivos - Rust ajuda a evitar erros de programação lógica, permitindo tipos altamente expressivos (como wrappers Newtype e variantes enum com conteúdo).
  • Verificações mais fortes em tempo de compilação - Mais bugs detectados em tempo de compilação aumentam a confiança do desenvolvedor de que, quando o código é compilado com êxito, ele funciona conforme o esperado.
  • Estrutura de teste integrada - Rust fornece uma estrutura de teste integrada onde os testes de unidade podem ser colocados junto com a implementação que eles testam, tornando os testes de unidade mais fáceis de incluir.
  • Imposição de tratamento de erros - Funções com falhas recuperáveis ​​podem retornar um tipo Result , que será uma variante de sucesso ou uma variante de erro. O compilador exige que os chamadores verifiquem e manipulem a variante de erro de uma enumeração Result retornada de uma chamada de função. Isso reduz o potencial de bugs resultantes de falhas não tratadas.
  • Inicialização - Rust exige que cada variável seja inicializada com um membro legal de seu tipo antes do uso, evitando uma inicialização não intencional com um valor inseguro.
  • Manipulação de inteiros mais segura – Todas as conversões de tipo inteiro são conversões explícitas. Os desenvolvedores não podem lançar acidentalmente durante uma chamada de função ao atribuir uma variável ou ao tentar fazer aritmética com outros tipos. A verificação de overflow está ativada por padrão no Android para Rust, o que exige que as operações de overflow sejam explícitas.

Para obter mais informações, consulte a série de postagens do blog sobre suporte ao Android Rust: