E0308E0308 — Tipo de Result Incompatível
A função retorna um Result com o tipo Ok ou Err incorreto.
O que causa este erro
O tipo de retorno é Result<T, E>, mas o valor retornado tem um tipo T ou E diferente. O operador ? pode estar convertendo entre tipos de erro incompatíveis.
Como corrigir
Certifique-se de que os tipos Ok e Err correspondam à assinatura da função. Implemente From<ErrorType> para seu tipo de erro a fim de habilitar a conversão pelo operador ?. Use .map_err() para converter tipos de erro. Use um crate como anyhow ou thiserror para tratamento de erros ergonômico.
Exemplo
fn foo() -> Result<(), String> {
Ok(42) // expected ()
}Códigos de Erro Relacionados
E0502E0502 — Não É Possível Emprestar como Mutável Porque Também Foi Emprestado como Imutável
Um valor não pode ser emprestado de forma mutável enquanto um empréstimo imutável ainda está ativo.
E0277E0277 — Tipo Não Implementa Send
Um tipo que não implementa Send é usado em um contexto que requer segurança entre threads.
E0308E0308 — Tipos Incompatíveis
O tipo esperado não corresponde ao tipo real fornecido.
E0369E0369 — Operador Não Pode Ser Aplicado ao Tipo
Um operador binário é usado com tipos que não o suportam.
E0106E0106 — Especificador de Tempo de Vida Ausente
Uma referência na assinatura de uma função ou em uma struct está sem um parâmetro de tempo de vida.
E0425E0425 — Não É Possível Encontrar o Valor Neste Escopo
Um identificador é utilizado mas não está definido no escopo atual.