Kütüphane modülleri

İki tür Rust kitaplık modülü vardır; biri Rust kitaplıkları üreten, diğeri ise C uyumlu kitaplıklar üreten. Ek olarak, sistem oluşturma amaçları doğrultusunda Rust prosedür makrolarını ( proc-macros ) özel bir kitaplık türü olarak düşünebilirsiniz.

pas_kütüphanesi

rust_library modülü, diğer Rust modülleri tarafından kullanılmak üzere Rust kitaplıkları üretir.

_host değişkenlerine ek olarak Rust kitaplıklarında mevcut bağlantıyı kontrol eden modül türleri bulunur.

Rust Kitaplığı Modül Türü Tanım
pas_kütüphanesi Hem kitaplık değişkenlerini, hem de rlib ve dylib sağlar. AOSP, Rust kitaplıkları için bu modül türünü önerir; çünkü bu modüller, rustlibs özelliği altında bir bağımlılık olarak listelendiğinde doğru şekilde çalışabilir.
Rust_library_rlib Rust kütüphanesinin yalnızca rlib versiyonunu sağlar; yalnızca rlib değişkenlerini sağlayan modüllerin rustlibs özelliğiyle çalışacağı garanti edilemez.
Rust_library_dylib Rust kütüphanesinin yalnızca dylib versiyonunu sağlar; yalnızca dylib varyantlarını sağlayan modüllerin rustlibs özelliğiyle çalışacağı garanti edilemez.

pas_ffi

rust_ffi modülü, CC modülleriyle birlikte çalışmak üzere C uyumlu kitaplıklar üretir.

_host çeşitlerine ek olarak Rust FFI kitaplıklarında, aşağıdaki tabloda gösterilen, mevcut bağlantıyı kontrol eden modül türleri bulunur.

Rust FFI Kütüphane Modülü Türü Tanım
pas_ffi Her iki C kütüphanesi varyantını da sağlar: statik ve paylaşılan.
pas_ffi_shared Yalnızca C paylaşılan kitaplık varyantını sağlar.
pas_ffi_statik Yalnızca C statik kitaplık varyantını sağlar.

C'den Rust'u çağırmak için rust_ffi kullanımına ilişkin temel bir örnek için Android Rust Desenleri sayfasına bakın.

Daha gelişmiş kullanım hakkında bilgi için resmi Rust belgelerini ziyaret edin.

Rust_proc_macro

Rust prosedürel makroları (proc-makroları), derleyiciyi kaynak kodu dönüşümleri gerçekleştirecek şekilde genişletmek veya yeni özellikler sağlamak için yararlı olabilir. Bunlar hakkında daha fazla bilgiyi resmi Rust belgelerinin Prosedürel Makrolar sayfasında bulabilirsiniz.

Derleme sisteminin amaçları açısından, rust_proc_macro modülü, rust_library modüllerine benzer şekilde çalışır. rust_proc_macros bağlı modüller için modül adını proc_macros özelliğine ekleyin.

proc_macros derleyici eklentileri olduğundan, mutlaka ana bilgisayarı hedeflerler ve bir cihazda çalışacak herhangi bir kod üretmezler.

Önemli Rust kitaplığı özellikleri

Aşağıdaki tabloda tanımlanan özellikler, tüm modüller için geçerli olan Önemli ortak özelliklere ek olarak verilmiştir. Bunlar ya Rust kütüphane modülleri için özellikle önemlidir ya da rust_library modül tipine özgü benzersiz davranışlar sergiler.

Rust Kitaplığı Özellikleri Tanım
kök / isim stem özelliği, aksi takdirde varsayılan olarak name olarak ayarlanacak olan çıktı kitaplığı dosya adını kontrol eder.

Rust derleyicisi, kitaplık dosya adlarına belirli gereksinimler getirir ve sonuç olarak derleme sistemi, derleme sorunlarını önlemek için bu gereksinimleri zorunlu kılar. Çıktı dosya adı lib<crate_name><suffix> biçimine uygun olmalıdır. (Burada crate_name özelliğine bağımlılık var).

sandık_adı Bu, kütüphane üreten modüller için gerekli bir özelliktir; ayrıca çıktı dosya adıyla da bir ilişkisi vardır. ( stem tanımına bakın.)
Export_include_dirs rust_ffi modülleri için bu özellik, göreceli içerme yollarını temsil eden dizelerin bir listesini tanımlar: bağımlı cc modüllerinin kullanabileceği başlıkları içeren yollar.

Rust_library veya Rust_ffi bağlantısı

Varsayılan olarak, cihazları hedefleyen Rust kitaplık modülleri her zaman libstd dinamik olarak bağlanır. Ancak ana bilgisayar modülleri her zaman libstd statik olarak bağlanır.

rustlibs bağımlılıkları için kullanılan bağlantı, kök modülün bağlantı tercihlerine bağlıdır. (Örneğin, prefer_rlib: true içeren bir rust_binary , rustlibs rlibs olarak bağlayan Rust kitaplığı değişkenlerini kullanır.)

Herhangi bir dinamik pas kitaplığına (statik yürütülebilir dosyalar gibi) dayanmayan kök bağımlılık modüllerinin üretimine izin vermek için rlibs , hem dinamik hem de statik libstd bağlantı varyantları sağlar. Doğru varyant Soong tarafından otomatik olarak bağlanır.