Kitaplık modülleri

Biri Rust kitaplıkları, diğeri C uyumlu kitaplıklar oluşturan iki tür Rust kitaplık modülü vardır. Ayrıca, derleme sistemi amacıyla Rust prosedürel makrolarını (proc-macros) özel bir kitaplık türü olarak düşünebilirsiniz.

rust_library

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

Rust kitaplıklarında, _host varyantlarına ek olarak mevcut bağlantıyı kontrol eden modül türleri bulunur.

Rust Kitaplığı Modülü Türü Tanım
rust_kitaplığı Hem rlib hem de dylib kitaplık varyantlarını sağlar. AOSP, Rust kitaplıkları için bu modül türünü önerir. Bu tür, modüllerin rustlibs mülkü altında bağımlılık olarak listelendiğinde doğru şekilde çalışmasını sağlar.
rust_library_rlib Rust kitaplığının yalnızca rlib varyantını sağlar; yalnızca rlib varyantları sağlayan modüllerin rustlibs mülküyle çalışacağı garanti edilemez.
rust_library_dylib Rust kitaplığının yalnızca dylib varyantını sağlar; yalnızca dylib varyantları sağlayan modüllerin rustlibs mülküyle çalışacağı garanti edilemez.

rust_ffi

rust_ffi modülü, CC modülleriyle birlikte çalışabilmek için C uyumlu kitaplıklar oluşturur.

Rust FFI kitaplıkları, _host varyantlarına ek olarak aşağıdaki tabloda gösterilen mevcut bağlantıyı kontrol eden modül türlerine sahiptir.

Rust FFI Kitaplığı Modülü Türü Tanım
rust_ffi İki C kitaplığı varyantını sağlar: statik ve paylaşılan.
rust_ffi_shared Yalnızca C paylaşılan kitaplık varyantını sağlar.
rust_ffi_static Yalnızca C statik kitaplık varyantını sağlar.

C'den Rust'u çağırmak için rust_ffi kullanmayla ilgili temel bir örnek için Android Rust Desenleri sayfasına bakın.

Daha gelişmiş kullanım hakkında bilgi edinmek için resmi Rust dokümanlarını ziyaret edin.

rust_proc_macro

Rust prosedürel makroları (proc-makrolar), derleyiciyi kaynak kod dönüşümleri gerçekleştirecek veya yeni özellikler sağlayacak şekilde genişletmek için yararlı olabilir. Bu konular hakkında daha fazla bilgiyi resmi Rust dokümanlarının Prosedürlere Dayalı Makrolar sayfasında bulabilirsiniz.

Derleme sistemi açısından rust_proc_macro modülü, rust_library modüllerine benzer şekilde çalışır. rust_proc_macros'e bağlı modüller için modül adını proc_macros mülküne ekleyin.

proc_macros derleyici eklentileri olduğundan, ana makineyi hedefler ve cihazda çalışacak kod üretmez.

Rust kitaplıklarının önemli özellikleri

Aşağıdaki tabloda tanımlanan özellikler, tüm modüller için geçerli olan Önemli ortak özelliklere ektir. Bunlar, Rust kitaplık modülleri için özellikle önemlidir veya rust_library modül türüne özgü benzersiz davranışlar sergiler.

Rust Kitaplığı Özellikleri Tanım
kabuk / ad stem mülkü, çıkış kitaplığı dosya adını kontrol eder. Aksi takdirde dosya adı varsayılan olarak name olur.

Rust derleyici, kitaplık dosya adlarına belirli koşullar uygular. Bunun sonucunda, derleme sistemi, derleme sorunlarını önlemek için bu gereksinimleri uygular. Çıkış dosyası adı lib<crate_name><suffix> biçimine uygun olmalıdır. (Burada crate_name mülküne bağımlılık vardır).

crate_name Bu, kitaplık oluşturan modüller için zorunlu bir özelliktir ve çıkış dosya adıyla da ilişkilidir. (stem tanımına bakın.)
dışa_aktarma_dahil_dizinleri rust_ffi modülleri için bu özellik, göreli dahil etme yollarını temsil eden bir dize listesi tanımlar: bağımlı cc modüllerinin kullanabileceği üstbilgileri içeren yollar.

rust_library veya rust_ffi bağlantısı

Cihazları hedefleyen Rust kitaplık modülleri varsayılan olarak her zaman libstd'e dinamik olarak bağlanır. Ancak ana makine modülleri her zaman libstd'e 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'yi rlibs olarak bağlayan Rust kitaplığı varyantlarını kullanır.)

Dinamik pas kitaplığına (ör. statik yürütülebilir dosyalar) dayalı olmayan kök bağımlılık modüllerinin üretilmesine olanak tanımak 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.