מודולי ספרייה

ישנם שני סוגים של מודולים של ספריית 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 אוכפת את הדרישות הללו כדי למנוע בעיות קומפילציה. שם קובץ הפלט חייב להתאים לפורמט lib<crate_name><suffix> . (יש כאן תלות במאפיין crate_name ).

שם_ארגז זהו מאפיין נדרש עבור מודולים המייצרים ספרייה; בנוסף יש לו קשר לשם קובץ הפלט. (ראה את הגדרת 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.