โมดูลไลบรารี Rust มีสองประเภท ประเภทแรกสร้างไลบรารี Rust และอีกประเภทหนึ่งสร้างไลบรารีที่เข้ากันได้กับ C นอกจากนี้ เพื่อวัตถุประสงค์ในการสร้างระบบ คุณสามารถพิจารณามาโครขั้นตอน Rust ( proc-macros
) เป็นไลบรารีประเภทพิเศษได้
rust_library
โมดูล rust_library
สร้างไลบรารีRustสำหรับใช้งานโดยโมดูลRustอื่นๆ
นอกเหนือจากตัวแปร _host
แล้ว ไลบรารี Rust ยังมีประเภทโมดูลที่ควบคุมการเชื่อมโยงที่มีอยู่
ประเภทโมดูลไลบรารีสนิม | คำนิยาม |
---|---|
rust_library | จัดเตรียมทั้งไลบรารีเวอร์ชัน rlib และ dylib AOSP แนะนำประเภทโมดูลนี้สำหรับไลบรารี Rust เนื่องจากช่วยให้โมดูลทำงานได้อย่างถูกต้องเมื่อแสดงรายการเป็นการพึ่งพาภายใต้คุณสมบัติ rustlibs |
rust_library_rlib | จัดเตรียมเฉพาะตัวแปร rlib ของไลบรารี Rust ไม่สามารถรับประกันว่าโมดูลที่ให้เฉพาะตัวแปร rlib จะทำงานกับคุณสมบัติ rustlibs ได้ |
rust_library_dylib | จัดเตรียมเฉพาะตัวแปร dylib ของไลบรารี Rust ไม่สามารถรับประกันโมดูลที่ให้เฉพาะตัวแปร dylib ว่าจะทำงานกับคุณสมบัติ rustlibs ได้ |
rust_ffi
โมดูล rust_ffi
สร้างไลบรารีที่เข้ากันได้กับ C เพื่อทำงานร่วมกับโมดูล CC
นอกเหนือจากตัวแปร _host
แล้ว ไลบรารี Rust FFI ยังมีประเภทโมดูลที่ควบคุมการเชื่อมโยงที่มีอยู่ ดังแสดงในตารางต่อไปนี้
ประเภทโมดูลไลบรารี Rust FFI | คำนิยาม |
---|---|
rust_ffi | จัดเตรียมไลบรารี C ทั้งสองแบบ: แบบคงที่และแบบแชร์ |
rust_ffi_shared | จัดเตรียมเฉพาะตัวแปรไลบรารีที่แบ่งใช้ C เท่านั้น |
rust_ffi_static | จัดเตรียมเฉพาะตัวแปรไลบรารี C แบบคงที่ |
สำหรับตัวอย่างพื้นฐานของการใช้ rust_ffi
ในการเรียก Rust จาก C โปรดดูที่หน้า รูปแบบสนิมของ Android
สำหรับข้อมูลเกี่ยวกับการใช้งานขั้นสูง โปรดดู เอกสารประกอบของ Rust อย่างเป็นทางการ
rust_proc_macro
มาโครขั้นตอนสนิม (proc-มาโคร) อาจมีประโยชน์สำหรับการขยายคอมไพลเลอร์เพื่อทำการแปลงซอร์สโค้ดหรือจัดเตรียมคุณลักษณะใหม่ สามารถดูข้อมูลเพิ่มเติมได้จากหน้า Procedural Macros ของเอกสาร Rust อย่างเป็นทางการ
สำหรับวัตถุประสงค์ของระบบ build โมดูล rust_proc_macro
ทำงานคล้ายกับโมดูล rust_library
สำหรับโมดูลที่ขึ้นอยู่กับ rust_proc_macros
ให้เพิ่มชื่อโมดูลให้กับคุณสมบัติ proc_macros
เนื่องจาก proc_macros
เป็นปลั๊กอินคอมไพเลอร์ จึงจำเป็นต้องกำหนดเป้าหมายไปที่โฮสต์ และไม่สร้างโค้ดใดๆ ที่จะทำงานบนอุปกรณ์
คุณสมบัติไลบรารี Rust ที่โดดเด่น
คุณสมบัติที่กำหนดไว้ในตารางด้านล่างนี้เป็นส่วนเพิ่มเติมจาก คุณสมบัติทั่วไปที่สำคัญ ที่ใช้กับโมดูลทั้งหมด สิ่งเหล่านี้มีความสำคัญอย่างยิ่งต่อโมดูลไลบรารีของ Rust หรือแสดงลักษณะการทำงานเฉพาะของโมดูลประเภท rust_library
โดยเฉพาะ
คุณสมบัติห้องสมุดสนิม | คำนิยาม |
---|---|
ก้าน / ชื่อ | คุณสมบัติ stem จะควบคุมชื่อไฟล์ไลบรารีเอาท์พุต ซึ่งมิฉะนั้นจะมีค่าเริ่มต้นเป็น name . คอมไพเลอร์ Rust กำหนดข้อกำหนดบางประการเกี่ยวกับชื่อไฟล์ไลบรารี และด้วยเหตุนี้ระบบบิลด์จึงบังคับใช้ข้อกำหนดเหล่านี้เพื่อหลีกเลี่ยงปัญหาการคอมไพล์ ชื่อไฟล์เอาต์พุตต้องเป็นไปตามรูปแบบ |
crate_name | นี่เป็นคุณสมบัติที่จำเป็นสำหรับโมดูลที่ผลิตไลบรารี นอกจากนี้ยังมีความสัมพันธ์กับชื่อไฟล์เอาต์พุตอีกด้วย (ดูคำจำกัดความ stem ) |
ส่งออก_รวม_dirs | สำหรับโมดูล rust_ffi คุณสมบัตินี้จะกำหนดรายการสตริงที่แสดงถึงพาธรวมแบบสัมพัทธ์: พาธซึ่งมีส่วนหัวที่โมดูล cc ที่ขึ้นต่อกันสามารถใช้ได้ |
การเชื่อมโยงของrust_libraryหรือrust_ffi
ตามค่าเริ่มต้น อุปกรณ์ที่กำหนดเป้าหมายโมดูลไลบรารี Rust จะถูกเชื่อมโยงแบบไดนามิกกับ libstd
เสมอ อย่างไรก็ตาม โมดูลโฮสต์จะเชื่อมโยงแบบคงที่กับ libstd
เสมอ
การเชื่อมโยงที่ใช้สำหรับการขึ้นต่อกันของ rustlibs
ขึ้นอยู่กับการกำหนดค่าตามความชอบการเชื่อมโยงของโมดูลรูท (ตัวอย่างเช่น rust_binary
ที่มี prefer_rlib: true
จะใช้เวอร์ชันไลบรารีของ Rust ที่เชื่อมโยง rustlibs
เป็น rlibs
)
เพื่ออนุญาตการผลิตโมดูลการขึ้นต่อกันของรูทที่ไม่ต้องอาศัยไลบรารีสนิมแบบไดนามิกใดๆ (เช่น โปรแกรมปฏิบัติการแบบคงที่) rlibs
จัดเตรียมตัวแปรการเชื่อมโยง libstd
ทั้งแบบไดนามิกและแบบคงที่ ตัวแปรที่ถูกต้องจะถูกเชื่อมโยงโดยอัตโนมัติโดย Soong