UUID em Rust: guia completo com exemplos práticos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Biblioteca uuid para Rust: guia completo para gerar e trabalhar com UUID

1. O que é uuid e por que você precisa dela?

A biblioteca uuid para Rust é uma das crates mais populares e estáveis para gerar, fazer parsing e trabalhar com identificadores únicos universais (UUID) de acordo com o padrão RFC 4122. UUID (Universally Unique Identifier) é um número de 128 bits que é garantidamente único no espaço e no tempo, tornando-o ideal para uso como chaves primárias em bancos de dados, identificadores de sessão, rastreadores de eventos e qualquer outro cenário que exija unicidade sem gerenciamento centralizado.

Por que você precisa dessa biblioteca? No desenvolvimento moderno com Rust, surge frequentemente a necessidade de gerar identificadores únicos que não dependam da ordem de criação dos objetos, não revelem informações sobre a quantidade de registros (ao contrário de IDs autoincrementais) e possam ser transmitidos com segurança entre diferentes sistemas. A crate uuid fornece um conjunto completo de ferramentas para trabalhar com UUID das versões 1, 3, 4, 5 e 7 (a última é uma versão temporal, adicionada em atualizações recentes). Ela suporta serialização via serde, trabalho com diferentes formatos de representação (canônico, sem hífens, URN) e integração com bancos de dados populares através de recursos correspondentes.

A biblioteca é ativamente mantida pela comunidade, possui documentação excelente e é usada em milhares de projetos. Ela é escrita em Rust puro, sem dependências externas (exceto recursos opcionais), o que garante segurança de memória e alta performance. Se você está escrevendo um servidor web, um sistema distribuído, uma ferramenta de linha de comando ou qualquer outra aplicação em Rust que precise de identificadores únicos — o uuid será seu aliado indispensável.

2. Instalação

Para adicionar a biblioteca uuid ao seu projeto Rust, execute um dos seguintes comandos no diretório raiz do projeto:

cargo add uuid

Ou adicione manualmente a dependência no arquivo Cargo.toml:

[dependencies]
uuid = { version = "1.10", features = ["v4", "v7", "serde"] }

Observe a seção features. Por padrão, a biblioteca inclui apenas funcionalidades básicas. Para trabalhar com versões específicas de UUID, é necessário indicar explicitamente os recursos correspondentes:

  • v1 — UUID versão 1 (baseado em tempo e endereço MAC)
  • v3 — UUID versão 3 (baseado em hash MD5 de nome e namespace)
  • v4 — UUID versão 4 (aleatório)
  • v5 — UUID versão 5 (baseado em hash SHA-1 de nome e namespace)
  • v7 — UUID versão 7 (temporal com precisão de milissegundos, RFC 9562)
  • serde — suporte a serialização/desserialização via crate serde
  • fast-rng — uso de gerador de números aleatórios rápido (recomendado para v4)

Se você precisar de todas as funcionalidades, pode especificar:

[dependencies]
uuid = { version = "1.10", features = ["v1", "v3", "v4", "v5", "v7", "serde"] }

3. Início rápido — exemplo mínimo funcional

Crie um novo projeto com o comando cargo new uuid_exemplo, adicione a dependência no Cargo.toml conforme indicado acima, e substitua o conteúdo do arquivo src/main.rs pelo seguinte código:

use uuid::Uuid;

fn main() {
    // Gera um UUID aleatório versão 4
    let meu_uuid = Uuid::new_v4();
    println!("UUID v4 gerado: {}", meu_uuid);
    
    // Faz parsing de um UUID a partir de uma string
    let parsed = Uuid::parse_str("550e8400-e29b-41d4-a716-446655440000")
        .expect("Não foi possível fazer o parsing do UUID");
    println!("UUID parseado: {}", parsed);
    
    // Comparação entre UUIDs
    let outro_uuid = Uuid::new_v4();
    if meu_uuid == outro_uuid {
        println!("Os UUIDs são iguais (improvável!)");
    } else {
        println!("Os UUIDs são diferentes (como esperado)");
    }
}

Execute o projeto com cargo run. Você verá algo como:

UUID v4 gerado: f47ac10b-58cc-4372-a567-0e02b2c3d479
UUID parseado: 550e8400-e29b-41d4-a716-446655440000
Os UUIDs são diferentes (como esperado)

Recommendations