Introdução ao Android Rust

A plataforma Android oferece suporte para o desenvolvimento de componentes nativos do SO em Rust, uma moderna linguagem de programação de sistemas que oferece garantias de segurança de memória com desempenho equivalente ao C/C++. O Rust usa uma combinação de verificações em tempo de compilação que impõem o tempo de vida 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 moderna que permitem que os desenvolvedores sejam mais produtivos e confiantes em seu código:

  • Programação concorrente segura - A facilidade com que isso permite que os usuários escrevam código eficiente e seguro para threads deu origem ao slogan Fearless Concurrency da Rust.
  • Sistema de tipo expressivo - 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 de tempo de compilação mais fortes - Mais bugs detectados em tempo de compilação aumentam a confiança do desenvolvedor de que, quando o código compila com sucesso, ele funciona conforme o esperado.
  • Estrutura de teste integrada - Rust fornece uma estrutura de teste integrada na qual os testes de unidade podem ser colocados ao lado da implementação que eles testam, tornando o teste de unidade mais fácil de incluir.
  • Imposição de tratamento de erros - Funções com falhas recuperáveis ​​podem retornar um Result type , 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 um Result enum retornado 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 para um membro legal de seu tipo antes do uso, evitando uma inicialização não intencional para um valor não seguro.
  • Manipulação de inteiros mais segura - Todas as conversões do tipo inteiro são conversões explícitas. Os desenvolvedores não podem converter 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 estouro está ativada por padrão no Android for Rust, o que exige que as operações de estouro sejam explícitas.

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