Modelando Universos Abertos e Fechados de Escolhas em Rust

2025-02-21
Modelando Universos Abertos e Fechados de Escolhas em Rust

Este artigo explora como modelar escolhas em Rust, distinguindo entre universos fechados (onde todas as opções são conhecidas e fixas, como o tipo `Option` do Rust) e universos abertos (onde novas opções podem ser adicionadas). Para universos fechados, enums são adequados. Universos semi-abertos (onde os autores da biblioteca podem adicionar opções, mas os usuários não podem), são melhor tratados com enums não exaustivos, forçando os usuários a considerar padrões curinga e garantindo a compatibilidade com versões anteriores da API. Universos totalmente abertos são melhor abordados com strings ou newtypes, ou traits para maior flexibilidade. O artigo também discute as armadilhas de usar uma variante 'Desconhecido' e explora o uso de traits selados. O autor conclui recomendando uma abordagem caso a caso, ponderando as compensações entre a abordagem mais simples baseada em strings e a abordagem mais poderosa, porém mais complexa, baseada em traits.

Leia mais
Desenvolvimento Sistemas de Tipos

Nextest: Por que Processo por Teste?

2025-01-12
Nextest: Por que Processo por Teste?

O gerenciador de testes Rust cargo-nextest se destaca por executar cada teste em um processo separado. Este artigo aprofunda a justificativa, enfatizando não apenas os benefícios técnicos, mas também seu papel como ponto de coordenação dentro do vasto ecossistema Rust. O isolamento de processos impede interferências entre testes, solucionando problemas como concorrência de recursos compartilhados e vazamentos de memória, aumentando assim a confiabilidade. Embora a criação de processos gere alguma sobrecarga, as vantagens superam os custos, especialmente para grandes conjuntos de testes, tornando-o um ponto focal estável e confiável nos testes Rust.

Leia mais