Máquinas de Estado Finito como Estruturas de Dados: Indexando Bilhões de URLs

2025-08-14

Este artigo explora o uso de máquinas de estado finito (FSMs) como estruturas de dados para representar conjuntos e mapas ordenados, mostrando a eficiência do crate fst do Rust para construir índices. Ele aprofunda a construção de FSMs, cobrindo a construção de Trie e FSA, e demonstra a indexação de mais de 1,6 bilhão de URLs do arquivo Common Crawl de julho de 2015. Técnicas como mapeamento de memória, interseção de autômatos com expressões regulares, busca fuzzy com distância de Levenshtein e operações de conjunto em streaming também são discutidas. O autor constrói e compara benchmarks de FSTs contra outros esquemas de compressão (gzip, xz) em vários conjuntos de dados de tamanhos e características variados.

Leia mais

Panic e unwrap() em Rust: Quando e como usá-los?

2025-05-21

Este artigo aprofunda o uso de `panic` e `unwrap()` na linguagem de programação Rust. O autor argumenta que `panic` não deve ser usado para tratamento de erros gerais, mas como um sinal de bugs no programa. `unwrap()` é aceitável em testes, código de exemplo e prototipagem, mas deve ser usado com cautela em produção, pois pode levar a travamentos do programa. O autor explica detalhadamente os invariantes de tempo de execução e por que às vezes não é possível ou desejável mover todos os invariantes para invariantes de tempo de compilação. Finalmente, o autor recomenda o uso de `expect()` em vez de `unwrap()` quando possível e discute se deve haver lint contra o uso de `unwrap()`.

Leia mais
Desenvolvimento