Solução Criativa para Implementações Blanket Conflituantes em Rust
2025-07-04

O sistema de traits do Rust é poderoso, mas estrito em evitar ambiguidades em implementações blanket. O autor encontrou esse problema ao construir o Joydb, precisando suportar duas implementações mutuamente exclusivas do trait `Adapter`: `UnifiedAdapter` e `PartitionedAdapter`. Uma abordagem direta usando implementações blanket falhou. A solução, detalhada neste post, usa structs de marcador (`Unified` e `Partitioned`), um trait auxiliar (`BlanketAdapter`) e um tipo associado dentro do trait `Adapter`. Isso permite habilmente ambos os comportamentos sem violar as regras de coerência do Rust, mantendo boa ergonomia e manutenibilidade do código.
Desenvolvimento
Implementações Blanket