2015-06-09 18 views
15

C++ 'da, şablonlar dinamik kitaplıklara oluşturulamaz, bunları yalnızca başlık dosyaları ile kullanabiliriz.Bir rlib'de depolanan genel işlevler ve türleri nasıl?

C# 'de, genel işlevler ve türler .NET'de ara dil tarafından yorumlanabilir.

Rust'in sanal makinesi yoktur ve jenerikler rlib dosyalarında depolanabilir. Bunu başarmayı nasıl başardı? Rlib dosyalarının biçimi nedir?

+2

.rlib, herhangi bir noktada değişime eğilimli olan ve uyumluluğu garanti etme amacına sahip olmayan bir özel biçimdir. –

cevap

14

rlib, ek meta verileri içeren düzenli bir statik kütüphanedir (ar biçiminde yerleşik). Bu meta veriler, diğer şeylerin yanı sıra, #[inline] ile işaretlenmiş tüm jenerikler ve işlevler için tam, serileştirilmiş özet sözdizimi ağacını (AST) içerir.

Bir kütüphanenin başlık dosyalarını derlenmiş ikiliye taşıyan bir C++ derleyicisi olsaydı ve sonra bu kitaplığa bağlanırken onları tekrar okur gibi görünüyor.

İlgili konular