O que muda com o Rust 1.100.0 — perguntas e respostas
A versão 1.100.0 do Rust estabiliza o tipo never, traz o DropGuard e a função conjure_zst, e faz o Cargo avisar sobre dependências não utilizadas.
Explicador. Perguntas e respostas sobre o tema da notícia «Rust 1.100.0 estabiliza o tipo never ao fim de dez anos», escritas com IA só com factos da fonte abaixo.
Redação Agora24 · Explicador · Texto feito com IA · verificado automaticamente
Publicado

O que é o tipo never? Escreve-se ! no código e representa cálculos divergentes, que nunca chegam a produzir um valor, pelo que o código seguinte nunca é executado. Expressões que interrompem o fluxo, como return, break e std::process::exit, têm este tipo. A estabilização chegou ao fim de 10 anos e de cinco tentativas falhadas.
O que muda na prática com a estabilização? O tipo never passa a poder ser escrito em qualquer lugar, por exemplo em Result<T, !>, algo que antes não era permitido. Já podia ser usado como retorno de funções (-> !). Além disso, Infallible passou a ser um alias do never, o que torna as APIs antigas compatíveis com !.
Há alguma alteração que possa afetar código existente? Sim. Nas edições 2015, 2018 e 2021, o valor por omissão do never type passa de () para !, como já acontecia na edição 2024. Em regra não se nota, mas pode afetar casos raros, como ignorar o resultado de uma função que devolve um parâmetro genérico. A equipa avisou com antecedência e aconselha atualizar dependências afetadas.
O que é o DropGuard? É um tipo novo, core::mem::DropGuard, que executa um fecho quando é largado, em qualquer caminho de saída. Recebe uma variável e um fecho, e permite continuar a usar a variável através de Deref e DerefMut. O método dismiss devolve a variável sem executar o fecho, útil para operações tudo-ou-nada com reversão em caso de erro.
Para que serve a função conjure_zst? A função std::mem::conjure_zst é a forma indicada de criar, de modo unsafe, um valor de um tipo de tamanho zero, quando isso é seguro. Substitui truques como transmutar () ou usar MaybeUninit. É unsafe porque algumas APIs dependem de não se poder construir esses tipos, como o Python<'py> do PyO3.
Que novidade traz o Cargo? Passa a avisar sobre dependências não utilizadas, com o aviso cargo::unused_dependencies, ativo por omissão como warn. Só aparece se forem compilados todos os alvos que possam usar cada dependência; cargo check --bin foo, por exemplo, não mostra avisos sobre [dependencies]. Para dev-dependencies não é mostrado nenhum aviso.
Fonte: Rust Project — Announcing Rust 1.100.0
Fontes
- Rust Project fonte oficial · recolhido a 13 de novembro de 2026, 01:34
Texto próprio escrito a partir da(s) fonte(s) acima. Não reproduzimos textos de jornais nem de agências. Encontrou um erro? Peça uma correção.


