ישנם שני סוגים של מודולים של ספריית 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 יש סוגי מודולים השולטים בקישור הזמין, המוצג בטבלה הבאה.
סוג מודול ספריית חלודה FFI | הַגדָרָה |
---|---|
rust_ffi | מספק את שתי גרסאות ספריית C: סטטיות ומשותפות. |
rust_ffi_shared | מספק רק את גרסת הספרייה המשותפת C. |
rust_ffi_static | מספק רק את גרסת הספרייה הסטטית C. |
לדוגמא בסיסית לשימוש ב- rust_ffi
לקריאה ל-Rust מ-C, עיין בדף דפוסי חלודה של Android .
למידע על שימוש מתקדם יותר, בקר בתיעוד הרשמי של Rust .
rust_proc_macro
פקודות מאקרו פרוצדורליות של חלודה (proc-macros) יכולות להיות שימושיות להרחבת המהדר לביצוע טרנספורמציות של קוד מקור או לספק תכונות חדשות. מידע נוסף ניתן למצוא על אלה בדף מאקרו פרוצדורלי של התיעוד הרשמי של Rust.
למטרות מערכת הבנייה, מודול rust_proc_macro
פועל בדומה למודולי rust_library
. עבור מודולים התלויים ב- rust_proc_macros
, הוסף את שם המודול למאפיין proc_macros
.
מכיוון ש- proc_macros
הם תוספים מהדר, הם בהכרח מכוונים למארח ואינם מייצרים שום קוד שיפעל במכשיר.
מאפיינים בולטים של ספריית חלודה
המאפיינים המוגדרים בטבלה למטה מתווספים למאפיינים המשותפים החשובים החלים על כל המודולים. אלה חשובים במיוחד למודולי ספריית Rust, או שהם מפגינים התנהגות ייחודית ספציפית לסוג המודול rust_library
.
נכסי ספריית חלודה | הַגדָרָה |
---|---|
גזע / שם | המאפיין stem שולט בשם הקובץ של ספריית הפלט, שאחרת כברירת מחדל היא name . מהדר Rust מטיל דרישות מסוימות על שמות קבצים בספרייה, וכתוצאה מכך מערכת ה-build אוכפת את הדרישות הללו כדי למנוע בעיות קומפילציה. שם קובץ הפלט חייב להתאים לפורמט |
שם_ארגז | זהו מאפיין נדרש עבור מודולים המייצרים ספרייה; בנוסף יש לו קשר לשם קובץ הפלט. (ראה את הגדרת stem .) |
export_include_dirs | עבור מודולים rust_ffi , מאפיין זה מגדיר רשימה של מחרוזות המייצגות relative include paths: נתיבים המכילים כותרות שמודולי cc תלויים יכולים להשתמש בהן. |
קישור של rust_library או rust_ffi
כברירת מחדל, מודולי ספריית Rust למכשירי מיקוד מקושרים תמיד באופן דינמי מול libstd
. מודולי מארח, לעומת זאת, מקושרים תמיד באופן סטטי מול libstd
.
הקישור המשמש לתלות ב- rustlibs
תלוי בהעדפות הקישור של מודול השורש. (לדוגמה, rust_binary
עם prefer_rlib: true
ישתמש בגרסאות של ספריית Rust המקשרות rustlibs
כ- rlibs
.)
כדי לאפשר ייצור של מודולי תלות בשורש שאינם מסתמכים על ספריות חלודה דינמיות כלשהן (כגון קובצי הפעלה סטטיים), rlibs
מספק גרסאות קישור libstd
דינמיות וגם סטטיות. הגרסה הנכונה מקושרת אוטומטית על ידי Soong.