Kitaplık modülleri

Rust kitaplık modülü iki türdedir: Rust kitaplıkları oluşturan ve C uyumlu kitaplıklar oluşturan. 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ı oluşturur.

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_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 mülkü altında bağımlılık olarak listelendiğinde doğru şekilde çalışmasına olanak tanır.
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 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'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 belgelerini 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 belgelerindeki 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 ek olarak verilmiştir. Bunlar, Rust kitaplık modülleri için özellikle önemlidir veya rust_library modülü türüne özgü benzersiz bir davranış 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 derleyicisi, kitaplık dosya adlarına belirli koşullar uygular. Sonuç olarak derleme sorunlarını önlemek için derleme sistemi bu koşulları 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.)
export_include_dirs 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'ye 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.)

rlibs, dinamik rust kitaplıklarına (statik yürütülebilirler gibi) ihtiyaç duymayan kök bağımlılık modüllerinin üretilmesine izin vermek için hem dinamik hem de statik libstd bağlantı varyantları sağlar. Doğru varyant, Soong tarafından otomatik olarak bağlanır.