Обеспечение реализации, когда в этом ящике нет ни черты, ни черты [duplicate]
На этот вопрос уже есть ответ здесь:
Как реализовать черту, которой я не владею, для типа, которым я не владею? 2 ответаЯ хочу обеспечить реализацию чертыToHex
(не определено мной, отserialize
) для примитивного типаu8
:
impl ToHex for u8 {
fn to_hex(&self) -> String {
self.to_str_radix(16)
}
}
Проблема в том, что я получаю эту ошибку компилятора:
error: cannot provide an extension implementation where both trait and type are not defined in this crate
Я понимаю причину этой ошибки и ее логику, потому что и черта, и тип примитива являются внешними по отношению к моему коду. Но как я могу справиться с этой ситуацией и обеспечитьToHex
реализация дляu8
? И в более общем плане, как вы справляетесь с такого рода проблемами, мне кажется, что эта проблема должна быть общей, и должно быть возможно и легко расширять подобные типы?