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