Özel bir tür için Debug
özelliğinin uygulanmaya çalışılması, Vec<T>
numaralı uygulamaya yönelik olarak gerçekleştirildi. Nasıl çalıştığını anlamakta güçlük çekiyorum.Vec için Hata Ayıklama uygulamasını anlama <T>
uygulaması şöyledir:
impl<T: fmt::Debug> fmt::Debug for Vec<T> {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
fmt::Debug::fmt(&**self, f)
}
}
Diğer bazı türü için fmt
uygulanmasını çağırır anlıyoruz. Anlayamadığım şey, ne tür bir şey. Ben another question yardımı ile anlamaya çalıştım ve uygun görünen bir şey (&[T]
gibi bir şey) için arama, ama hiçbir başarı ile implementations of Debug
arasında arama.
Bu bağlamda &**self
tam anlamı nedir? Debug
'un hangi uygulaması çağrılıyor?
Teşekkür ederiz! Ben sadece bir şeyi özlüyorum: [T] 'için bir uygulama buldum ama' & [T] 'için değil, aranan ikinci kişi mi? Niye ya? – toro2k
@ toro2k Bunun hakkında biraz daha ekledim. Yardımcı olursa haberim olsun! – Shepmaster
Otomatik dereferencing (veya otomatik referanslama) olduğunu düşünmüyorum, çünkü fmt :: Debug :: fmt() ', 'self' referansla alır, yani bir & # T) bekler ve bir '& [T] 'verildi. –