Ada dua jenis modul library Rust, satu yang menghasilkan library Rust dan
satu yang menghasilkan library yang kompatibel dengan C. Selain itu, untuk tujuan sistem build, Anda dapat mempertimbangkan makro sesuai prosedur Rust (proc-macros
) sebagai jenis library khusus.
{i>rust_library<i}
Modul rust_library
menghasilkan library Rust untuk digunakan oleh modul Rust lainnya.
Selain varian _host
, library Rust memiliki jenis modul yang mengontrol
penautan yang tersedia.
Jenis Modul Library Rust | Definisi |
---|---|
rust_library | Menyediakan varian library, rlib dan dylib . AOSP merekomendasikan jenis modul ini untuk library Rust, karena memungkinkan modul berfungsi dengan benar saat tercantum sebagai dependensi di bawah properti rustlibs . |
rust_library_rlib | Hanya menyediakan varian rlib dari library Rust;
modul yang hanya menyediakan varian rlib tidak dapat dijamin berfungsi dengan
properti rustlibs . |
rust_library_dylib | Hanya menyediakan varian dylib dari library Rust;
modul yang hanya menyediakan varian dylib tidak dapat dijamin
berfungsi dengan properti rustlibs . |
rust_ffi
Modul rust_ffi
menghasilkan library yang kompatibel dengan C untuk melakukan interoperabilitas dengan modul CC.
Selain varian _host
, library FFI Rust memiliki jenis modul yang
mengontrol penautan yang tersedia, yang ditampilkan dalam tabel berikut.
Jenis Modul Library FFI Rust | Definisi |
---|---|
rust_ffi | Menyediakan varian library C: statis dan bersama. |
rust_ffi_shared | Hanya menyediakan varian library bersama C. |
rust_ffi_static | Hanya menyediakan varian library statis C. |
Untuk contoh dasar penggunaan rust_ffi
guna memanggil Rust dari C, lihat halaman
Pola Android Rust.
Untuk informasi tentang penggunaan lanjutan, buka dokumentasi Rust resmi.
rust_proc_macro
Makro prosedural Rust (proc-macros) dapat berguna untuk memperluas compiler guna melakukan transformasi kode sumber atau memberikan atribut baru. Informasi selengkapnya dapat ditemukan di halaman Makro Prosedur dalam dokumentasi Rust resmi.
Untuk tujuan sistem build, modul rust_proc_macro
berfungsi 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 compiler, plugin tersebut harus menargetkan host dan tidak
memproduksi kode apa pun yang akan berjalan di perangkat.
Properti library Rust yang penting
Properti yang ditentukan dalam tabel di bawah ini merupakan tambahan untuk Properti umum penting
yang berlaku untuk semua modul. Keduanya sangat penting untuk modul library Rust, atau menunjukkan perilaku unik khusus untuk jenis modul rust_library
.
Properti Rust Library | Definisi |
---|---|
stem / nama | Properti stem mengontrol nama file library output,
yang secara default ditetapkan ke name .
Compiler Rust menerapkan persyaratan tertentu pada nama file library, dan sebagai
akibatnya, sistem build menerapkan persyaratan ini untuk menghindari masalah kompilasi.
Nama file output harus sesuai dengan format |
crate_name | Ini adalah properti wajib untuk modul penghasil library;
properti ini juga memiliki hubungan dengan nama file output. (Lihat definisi stem .) |
export_include_dirs | Untuk modul rust_ffi , properti ini menentukan daftar
string yang mewakili jalur penyertaan relatif: jalur yang berisi header
yang dapat digunakan modul cc dependen. |
Tautan dari rust_library atau rust_ffi
Secara default, modul library Rust yang menargetkan perangkat selalu ditautkan secara dinamis
ke libstd
. Namun, modul host selalu ditautkan secara statis
dengan libstd
.
Penautan yang digunakan untuk dependensi rustlibs
bergantung pada preferensi penautan
modul root. (Misalnya, rust_binary
dengan prefer_rlib: true
akan
menggunakan varian library Rust yang menautkan rustlibs
sebagai rlibs
.)
Untuk memungkinkan produksi modul dependensi root yang tidak bergantung pada library rust dinamis (seperti file yang dapat dieksekusi statis), rlibs
menyediakan varian penautan libstd
dinamis dan statis. Varian yang benar akan otomatis ditautkan oleh
Soong.