У меня есть свой пользовательский тип, и это кусок 32 байта:
pub type Address = [u8; 32];
Поэтому, чтобы отобразить этот тип, у меня есть пользовательский форматер:
impl fmt::Display for Address {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
let public_key = sr25519::Public::from_raw(self);
let address = public_key.to_ss58check();
write!(f,"{}",address)
}
}
Но яне могу скомпилировать это:
error[E0117]: only traits defined in the current crate can be implemented for arbitrary types
--> core/linix-primitives/src/lib.rs:122:1
|
122 | impl fmt::Display for Address {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ impl doesn't use types inside crate
Я понимаю, что для реализации черты мне нужно иметь одно из двух: либо определение type
локально, либо определение trait
локально.
Ну, я уже определил тип локально:
pub type Address = [u8; 32];
так, почему он жалуется ???