Kitaplık modülleri

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ı, lib<crate_name><suffix> biçimine uygun olmalıdır. (Burada crate_name özelliği bağımlılığı vardır.)

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.