Fornecendo uma implementação quando a característica e o tipo não estiverem neste caixote [duplicado]
Esta pergunta já tem uma resposta aqui:
Como implementar uma característica que não possuo para um tipo que não possuo? 2 respostasEu quero fornecer uma implementação de uma característicaToHex
(não definido por mim, deserialize
) para um tipo primitivou8
:
impl ToHex for u8 {
fn to_hex(&self) -> String {
self.to_str_radix(16)
}
}
O problema é que recebo este erro do compilador:
error: cannot provide an extension implementation where both trait and type are not defined in this crate
Eu entendo o motivo desse erro e sua lógica, isso ocorre porque o traço e o tipo primitivo são externos ao meu código. Mas como posso lidar com essa situação e fornecer umaToHex
implementação parau8
? E, de maneira mais geral, como você lida com esse tipo de problema, parece-me que esse problema deve ser comum e deve ser possível e fácil estender tipos como esse?