Lançado Rust 1.80: visão geral das principais mudanças e novidades
A equipe de desenvolvedores do Rust apresentou mais um lançamento estável — a versão 1.80.0. Esta atualização traz várias funcionalidades há muito aguardadas, estabiliza uma série de APIs e melhora a experiência do usuário. Vamos entender o que mudou e como essas novidades impactarão o desenvolvimento.
Estabilização de LazyCell e LazyLock
Provavelmente, a novidade mais notável é a estabilização dos tipos LazyCell e LazyLock. Anteriormente, para inicialização preguiçosa de dados, era necessário usar crates de terceiros (por exemplo, once_cell) ou construções complexas.
- LazyCell — inicialização preguiçosa não bloqueante para contexto de thread única. Permite adiar a criação de um valor até o primeiro acesso.
- LazyLock — versão thread-safe, que usa um mutex para sincronização de acesso. Ideal para configurações globais e singletons.
Ambos os tipos implementam as traits Deref e DerefMut, tornando-os convenientes de usar. Agora a biblioteca padrão cobre os cenários mais comuns de inicialização preguiçosa.
Estabilização de API: Exclusive e outras
Na versão 1.80, uma série de novas APIs foi estabilizada:
Exclusive— um wrapper para acesso exclusivo a um valor. Permite trabalhar com segurança com tipos não-Send em contexto assíncrono, fornecendo acesso síncrono através de um closure.- Métodos
BorrowedBuf::as_sliceeBorrowedCursor::as_slice— simplificam o trabalho com buffers de entrada/saída. HashMap::extract_ifeHashSet::extract_if— iteradores que permitem remover elementos de uma coleção com base em um predicado, assumindo a posse deles.
Melhorias no compilador
A equipe do Rust continua trabalhando no feedback do compilador. No 1.80, as mensagens de erro para uso incorreto de traits e lifetimes foram melhoradas. Agora o compilador oferece dicas mais precisas, o que é especialmente útil para iniciantes.
- Diagnósticos aprimorados para erros relacionados a tipos que implementam
Drop. - Mensagens mais claras para conflitos de importação.
- Otimização do tempo de compilação para projetos que usam macros.
O que isso significa para os desenvolvedores?
A atualização para o Rust 1.80 é recomendada para todos que usam ativamente inicialização preguiçosa ou trabalham com código assíncrono. A estabilização do LazyLock permite eliminar dependências externas, simplificando a compilação e aumentando a segurança. Os novos métodos para coleções tornam o código mais idiomático, e a melhoria na diagnose do compilador acelera a depuração.
Para os usuários do PythonLib que estão aprendendo Rust ou o utilizam em conjunto com Python (por exemplo, via PyO3), esta atualização também é importante: APIs estáveis e desempenho aprimorado do compilador tornam o Rust ainda mais atraente para programação de sistemas e serviços de alta carga.
A lista completa de alterações está disponível nas notas oficiais do lançamento. Para atualizar o Rust, use o comando rustup update stable.