İ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ı |
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.