Rust kitaplık modüllerinin iki türü vardır: Rust kitaplıkları üreten ve C ile uyumlu kitaplıklar üreten. Ayrıca, derleme sistemi amaçları için 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üllerinin kullanması için Rust kitaplıkları oluşturur.
Rust kitaplıklarında _host
varyantlarına ek olarak, kullanılabilir bağlantıyı kontrol eden modül türleri de bulunur.
Rust Library Module Type | Tanım |
---|---|
rust_library | 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 özelliği altında bağımlılık olarak listelendiğinde doğru şekilde çalışmasına olanak tanır. |
rust_library_rlib | Yalnızca bir Rust kitaplığının rlib varyantını sağlar;
yalnızca rlib varyantları sağlayan modüllerin rustlibs özelliğiyle çalışacağı garanti edilemez. |
rust_library_dylib | Yalnızca bir Rust kitaplığının dylib varyantını sağlar;
yalnızca dylib varyantları sağlayan modüllerin rustlibs özelliğiyle çalışacağı garanti edilemez. |
rust_ffi
rust_ffi
modülü, CC modülleriyle birlikte çalışmak için C ile uyumlu kitaplıklar oluşturur.
Rust FFI kitaplıkları, _host
varyantlarına ek olarak, aşağıdaki tabloda gösterildiği gibi, kullanılabilir bağlantıyı kontrol eden modül türlerine sahiptir.
Rust FFI Library Module Type | Tanım |
---|---|
rust_ffi | Hem statik hem de paylaşılan C kitaplığı varyantlarını sağlar. |
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'ı çağırmak için rust_ffi
kullanma ile ilgili temel bir örnek için Android Rust Patterns (Android Rust Kalıpları) sayfasına bakın.
Daha gelişmiş kullanım hakkında bilgi edinmek için resmi Rust belgelerini ziyaret edin.
rust_proc_macro
Rust prosedürel makroları (proc-macros), derleyiciyi genişleterek kaynak kodu dönüşümleri yapma veya yeni özellikler sağlama konusunda faydalı olabilir. Bu konuda daha fazla bilgiyi resmi Rust belgelerinin Procedural Macros (İşlemsel 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
öğesine bağlı modüller için,
modül adını proc_macros
özelliğine ekleyin.
proc_macros
derleyici eklentileri olduğundan, zorunlu olarak ana makineyi hedefler ve cihazda çalışacak herhangi bir kod üretmez.
Ö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, Rust kitaplığı modülleri için özellikle önemlidir veya rust_library
modül türüne özgü benzersiz davranışlar sergiler.
Rust Kitaplığı Özellikleri | Tanım |
---|---|
stem / name | stem özelliği, çıkış kitaplığı dosya adını kontrol eder. Bu dosya adı, aksi belirtilmedikçe varsayılan olarak name olur.
Rust derleyicisi, kitaplık dosya adları için belirli koşullar uygular. Bu nedenle, derleme sorunlarını önlemek için derleme sistemi bu koşulları zorunlu kılar.
Çıkış dosyasının adı, |
crate_name | Bu özellik, kitaplık oluşturan modüller için zorunludur. Ayrıca çıkış dosya adıyla da ilişkilidir. (stem tanımına bakın.) |
export_include_dirs | rust_ffi modülleri için bu özellik, göreli dahil etme yollarını temsil eden bir dize listesini tanımlar: Bağımlı cc modüllerinin kullanabileceği başlıkları içeren yollar. |
rust_library veya rust_ffi bağlantısı
Cihazları hedefleyen Rust kitaplık modülleri varsayılan olarak her zaman libstd
'ya karşı dinamik olarak bağlanır. Ancak ana makine modülleri her zaman libstd
'ya karşı 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
ile rust_binary
, rustlibs
'yi rlibs
olarak bağlayan Rust kitaplığı varyantlarını kullanır.)
Herhangi bir dinamik Rust kitaplığına (ör. statik yürütülebilir dosyalar) dayanmayan kök bağımlılık modüllerinin üretilmesine 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.