Recursos Modernos

O Rust Ă© construĂ­do com toda a experiĂȘncia adquirida nas Ășltimas dĂ©cadas.

CaracterĂ­sticas da Linguagem

  • Enums e correspondĂȘncia de padrĂ”es.
  • Generics.
  • FFI sem overhead.
  • AbstraçÔes de custo zero.

Ferramentas

  • Excelentes mensagens de erro do compilador.
  • Gerenciador de dependĂȘncias integrado.
  • Suporte integrado para testes.
  • Excelente suporte ao protocolo de servidor de linguagem (LSP).

Pontos chave:

  • AbstraçÔes de custo zero, semelhantes ao C++, significa que vocĂȘ nĂŁo precisa ‘pagar’ por construçÔes de programação de alto nĂ­vel com memĂłria ou CPU. Por exemplo, escrever um loop usando for deve resultar aproximadamente no mesmo nĂ­vel de instruçÔes de baixo nĂ­vel quanto usar a construção .iter().fold().

  • Pode valer a pena mencionar que Rust enums sĂŁo ‘Tipos de Dados AlgĂ©bricos’ (‘Algebraic Data Types’), tambĂ©m conhecidos como ‘tipos de soma’, que permitem que o sistema de tipos expresse coisas como Option<T> e Result<T, E>.

  • Lembre as pessoas de lerem os erros — muitos desenvolvedores se acostumaram ignore as longas mensagens do compilador. O compilador Rust Ă© significativamente mais “verbal” do que outros compiladores. Muitas vezes, ele lhe fornecerĂĄ sugestĂ”es prĂĄticas, prontas para copiar e colar em seu cĂłdigo.

  • A biblioteca padrĂŁo do Rust (Rust standard library) Ă© pequena comparada a linguagens como Java, Python e Go. Rust nĂŁo vem com vĂĄrias coisas que vocĂȘ pode considerar padrĂŁo e essencial:

    • um gerador de nĂșmeros aleatĂłrios, mas veja rand.
    • suporte para SSL ou TLS, mas consulte rusttls.
    • suporte para JSON, mas consulte serde_json. O raciocĂ­nio por trĂĄs disso Ă© que funcionalidade na biblioteca padrĂŁo nĂŁo pode ser descartada, portanto ela tem que ser muito estĂĄvel. Para os exemplos acima, a comunidade do Rust ainda estĂĄ trabalhando para encontrar a melhor solução — e talvez nĂŁo exista uma Ășnica “melhor solução” para algumas dessas coisas. Rust vem com um gerenciador de pacotes embutido na forma de Cargo e isso torna trivial baixar e compilar crates de terceiros. Uma consequĂȘncia disso Ă© que a biblioteca padrĂŁo pode ser menor.

    Descobrir bons crates de terceiros pode ser um problema. Sites como https://lib.rs/ ajudam com isso, permitindo que vocĂȘ compare mĂ©tricas de crates para encontrar um bom e confiĂĄvel.

  • rust-analyzer Ă© uma implementação LSP bem suportada usada pelas principais IDEs e editores de texto.