Attualmente, Rust non ha ancora la caratteristica "specializzazione dei tratti". Per quanto ho capito, questo significa che un tratto non può essere implementato più di una volta per un dato tipo. Tuttavia, ho notato che il Borrow
trait è implementato for T where T: ?Sized
che sono tutti i tipi non di riferimento ci sono (giusto?). Ma è anche implementato per molti altri tipi, come Vec<T>
, che sembra una specializzazione.In che modo `Borrow` funziona senza specializzazione di tratto?
Come funziona? È una magia del compilatore o ho frainteso qual è la specializzazione dei tratti?