Ada dua jenis modul perpustakaan Rust, satu yang menghasilkan perpustakaan Rust dan satu lagi yang menghasilkan perpustakaan yang kompatibel dengan C. Selain itu, untuk tujuan membangun sistem, Anda dapat mempertimbangkan makro prosedural Rust ( proc-macros
) sebagai jenis perpustakaan khusus.
perpustakaan_karat
Modul rust_library
menghasilkan perpustakaan Rust untuk digunakan oleh modul Rust lainnya.
Selain varian _host
, pustaka Rust memiliki tipe modul yang mengontrol tautan yang tersedia.
Jenis Modul Perpustakaan Rust | Definisi |
---|---|
perpustakaan_karat | Menyediakan varian perpustakaan, rlib dan dylib . AOSP merekomendasikan jenis modul ini untuk perpustakaan Rust, karena memungkinkan modul untuk bekerja dengan benar ketika terdaftar sebagai ketergantungan di bawah properti rustlibs |
karat_perpustakaan_rlib | Hanya menyediakan varian rlib dari perpustakaan Rust; modul yang hanya menyediakan varian rlib tidak dapat dijamin berfungsi dengan properti rustlibs . |
karat_perpustakaan_dylib | Hanya menyediakan varian dylib dari perpustakaan Rust; modul yang hanya menyediakan varian dylib tidak dapat dijamin berfungsi dengan properti rustlibs . |
karat_ffi
Modul rust_ffi
menghasilkan pustaka yang kompatibel dengan C untuk berinteraksi dengan modul CC.
Selain varian _host
, pustaka Rust FFI memiliki tipe modul yang mengontrol tautan yang tersedia, ditunjukkan pada tabel berikut.
Jenis Modul Perpustakaan Rust FFI | Definisi |
---|---|
karat_ffi | Menyediakan kedua varian perpustakaan C: statis dan bersama. |
karat_ffi_shared | Hanya menyediakan varian perpustakaan bersama C. |
karat_ffi_statis | Hanya menyediakan varian perpustakaan statis C. |
Untuk contoh dasar penggunaan rust_ffi
untuk memanggil Rust dari C, lihat halaman Pola Android Rust .
Untuk informasi tentang penggunaan lebih lanjut, kunjungi dokumentasi resmi Rust .
karat_proc_makro
Makro prosedural karat (proc-makro) dapat berguna untuk memperluas kompiler untuk melakukan transformasi kode sumber atau menyediakan atribut baru. Informasi lebih lanjut dapat ditemukan di halaman Makro Prosedural dari dokumentasi resmi Rust.
Untuk keperluan sistem build, modul rust_proc_macro
bekerja mirip dengan modul rust_library
. Untuk modul yang bergantung pada rust_proc_macros
, tambahkan nama modul ke properti proc_macros
.
Karena proc_macros
adalah plugin kompiler, mereka selalu menargetkan host dan tidak menghasilkan kode apa pun yang dapat dijalankan pada perangkat.
Properti perpustakaan Rust yang terkenal
Properti yang ditentukan dalam tabel di bawah ini merupakan tambahan dari properti umum Penting yang berlaku untuk semua modul. Ini sangat penting untuk modul perpustakaan Rust, atau menunjukkan perilaku unik khusus untuk tipe modul rust_library
.
Properti Perpustakaan Karat | Definisi |
---|---|
batang / nama | Properti stem mengontrol nama file perpustakaan keluaran, yang jika tidak, defaultnya adalah name . Kompiler Rust menerapkan persyaratan tertentu pada nama file perpustakaan, dan sebagai hasilnya, sistem pembangunan menerapkan persyaratan ini untuk menghindari masalah kompilasi. Nama file keluaran harus sesuai dengan format |
nama_ peti | Ini adalah properti yang diperlukan untuk modul penghasil perpustakaan; itu juga memiliki hubungan dengan nama file keluaran. (Lihat definisi stem .) |
ekspor_include_dirs | Untuk modul rust_ffi , properti ini mendefinisikan daftar string yang mewakili jalur penyertaan relatif: jalur yang berisi header yang dapat digunakan oleh modul cc dependen. |
Tautan Rust_library atau Rust_ffi
Secara default, perangkat yang menargetkan modul perpustakaan Rust selalu ditautkan secara dinamis dengan libstd
. Modul host, bagaimanapun, selalu dihubungkan secara statis dengan libstd
.
Tautan yang digunakan untuk dependensi rustlibs
bergantung pada preferensi tautan modul root. (Misalnya, rust_binary
dengan prefer_rlib: true
akan menggunakan varian pustaka Rust yang menghubungkan rustlibs
dengan rlibs
.)
Untuk memungkinkan produksi modul ketergantungan root yang tidak bergantung pada pustaka karat dinamis apa pun (seperti executable statis), rlibs
menyediakan varian tautan libstd
dinamis dan statis. Varian yang benar secara otomatis ditautkan oleh Soong.