E0382E0382 — Uso de Valor Movido
Um valor é utilizado após ter sido movido para outra variável ou função.
O que causa este erro
O sistema de ownership do Rust determina que cada valor possui exatamente um dono. Quando um valor é movido (atribuído a outra variável ou passado a uma função), a variável original não pode mais ser utilizada. Isso se aplica a tipos que não implementam Copy.
Como corrigir
Clone o valor antes de movê-lo caso precise utilizá-lo novamente. Use referências (&T ou &mut T) em vez de transferir o ownership. Implemente o trait Copy para tipos pequenos. Reestruture o código para evitar o uso do valor após a movimentação.
Exemplo
let s = String::from("hi");
let s2 = s;
println!("{}", s);Códigos de Erro Relacionados
E0609E0609 — Nenhum Campo Chamado X no Tipo
A struct ou union não possui um campo com o nome fornecido.
E0283E0283 — Implementação de Trait Ambígua
Múltiplas implementações de trait poderiam se aplicar e Rust não consegue determinar qual usar.
E0384E0384 — Não é Possível Atribuir Duas Vezes a uma Variável Imutável
Uma variável está sendo reatribuída, mas não foi declarada como mutável.
E0433E0433 — Falha ao Resolver Caminho de Módulo
O caminho de módulo usado em uma instrução use ou caminho de tipo não pode ser resolvido.
panic-index-out-of-boundsPanic — Índice Fora dos Limites
O programa entrou em pânico porque um índice estava fora do intervalo válido para uma coleção.
E0412E0412 — Tipo Não Encontrado Neste Escopo
Um nome de tipo é usado mas não está definido nem importado no escopo atual.