دو نوع ماژول کتابخانه Rust وجود دارد، یکی که کتابخانه های Rust را تولید می کند و دیگری که کتابخانه های سازگار با C تولید می کند. علاوه بر این، برای اهداف ساخت سیستم میتوانید ماکروهای رویهای Rust ( proc-macros
) را به عنوان یک نوع کتابخانه خاص در نظر بگیرید.
rust_library
ماژول rust_library
کتابخانه های Rust را برای استفاده توسط سایر ماژول های Rust تولید می کند.
علاوه بر انواع _host
، کتابخانه های Rust دارای انواع ماژول هایی هستند که پیوند موجود را کنترل می کنند.
نوع ماژول کتابخانه 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، صفحه الگوهای زنگ اندروید را ببینید.
برای اطلاعات در مورد استفاده پیشرفته تر، از مستندات رسمی Rust دیدن کنید.
rust_proc_macro
ماکروهای رویهای Rust (proc-macros) میتوانند برای گسترش کامپایلر برای انجام تبدیل کد منبع یا ارائه ویژگیهای جدید مفید باشند. اطلاعات بیشتر در مورد آنها را می توانید در صفحه ماکروهای رویه ای اسناد رسمی Rust بیابید.
برای اهداف سیستم ساخت، ماژول rust_proc_macro
مشابه ماژول های rust_library
کار می کند. برای ماژول هایی که به rust_proc_macros
وابسته هستند، نام ماژول را به ویژگی proc_macros
اضافه کنید.
از آنجایی که proc_macros
افزونه های کامپایلر هستند، لزوماً میزبان را هدف قرار می دهند و هیچ کدی را تولید نمی کنند که روی دستگاه اجرا شود.
ویژگی های قابل توجه کتابخانه Rust
ویژگی های تعریف شده در جدول زیر علاوه بر ویژگی های مشترک مهم مهم است که برای همه ماژول ها اعمال می شود. اینها یا به ویژه برای ماژول های کتابخانه Rust مهم هستند، یا رفتار منحصر به فرد مخصوص نوع ماژول rust_library
را نشان می دهند.
ویژگی های کتابخانه Rust | تعریف |
---|---|
ساقه / نام | ویژگی stem نام فایل کتابخانه خروجی را کنترل می کند که در غیر این صورت به طور پیش فرض name گذاری می شود. کامپایلر Rust الزامات خاصی را بر روی نام فایل های کتابخانه اعمال می کند و در نتیجه سیستم ساخت این الزامات را برای جلوگیری از مشکلات کامپایل اعمال می کند. نام فایل خروجی باید با فرمت |
crate_name | این یک ویژگی لازم برای ماژول های تولید کتابخانه است. علاوه بر این، با نام فایل خروجی رابطه دارد. (به تعریف stem مراجعه کنید.) |
export_include_dirs | برای ماژولهای rust_ffi ، این ویژگی فهرستی از رشتهها را تعریف میکند که نشاندهنده مسیرهای نسبی شامل هستند: مسیرهایی که حاوی سرصفحههایی هستند که ماژولهای cc وابسته میتوانند استفاده کنند. |
پیوند rust_library یا rust_ffi
بهطور پیشفرض، ماژولهای کتابخانه Rust که دستگاههای هدف قرار میدهند، همیشه به صورت پویا با libstd
مرتبط میشوند. با این حال، ماژول های میزبان همیشه به صورت ایستا با libstd
مرتبط هستند.
پیوند مورد استفاده برای وابستگیهای rustlibs
به ترجیحات پیوند ماژول ریشه بستگی دارد. (به عنوان مثال، یک rust_binary
با prefer_rlib: true
از انواع کتابخانه Rust استفاده می کند که rustlibs
به عنوان rlibs
پیوند می دهند.)
برای اجازه دادن به تولید ماژولهای وابستگی ریشه که به هیچ کتابخانه زنگ پویا (مانند فایلهای اجرایی استاتیک) متکی نیستند، rlibs
انواع پیوندهای پویا و استاتیک libstd
را ارائه میکند. نوع صحیح به طور خودکار توسط Soong پیوند داده می شود.
دو نوع ماژول کتابخانه Rust وجود دارد، یکی که کتابخانه های Rust را تولید می کند و دیگری که کتابخانه های سازگار با C تولید می کند. علاوه بر این، برای اهداف ساخت سیستم میتوانید ماکروهای رویهای Rust ( proc-macros
) را به عنوان یک نوع کتابخانه خاص در نظر بگیرید.
rust_library
ماژول rust_library
کتابخانه های Rust را برای استفاده توسط سایر ماژول های Rust تولید می کند.
علاوه بر انواع _host
، کتابخانه های Rust دارای انواع ماژول هایی هستند که پیوند موجود را کنترل می کنند.
نوع ماژول کتابخانه 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، صفحه الگوهای زنگ اندروید را ببینید.
برای اطلاعات در مورد استفاده پیشرفته تر، از مستندات رسمی Rust دیدن کنید.
rust_proc_macro
ماکروهای رویهای Rust (proc-macros) میتوانند برای گسترش کامپایلر برای انجام تبدیل کد منبع یا ارائه ویژگیهای جدید مفید باشند. اطلاعات بیشتر در مورد آنها را می توانید در صفحه ماکروهای رویه ای اسناد رسمی Rust بیابید.
برای اهداف سیستم ساخت، ماژول rust_proc_macro
مشابه ماژول های rust_library
کار می کند. برای ماژول هایی که به rust_proc_macros
وابسته هستند، نام ماژول را به ویژگی proc_macros
اضافه کنید.
از آنجایی که proc_macros
افزونه های کامپایلر هستند، لزوماً میزبان را هدف قرار می دهند و هیچ کدی را تولید نمی کنند که روی دستگاه اجرا شود.
ویژگی های قابل توجه کتابخانه Rust
ویژگی های تعریف شده در جدول زیر علاوه بر ویژگی های مشترک مهم مهم است که برای همه ماژول ها اعمال می شود. اینها یا به ویژه برای ماژول های کتابخانه Rust مهم هستند، یا رفتار منحصر به فرد مخصوص نوع ماژول rust_library
را نشان می دهند.
ویژگی های کتابخانه Rust | تعریف |
---|---|
ساقه / نام | ویژگی stem نام فایل کتابخانه خروجی را کنترل می کند که در غیر این صورت به طور پیش فرض name گذاری می شود. کامپایلر Rust الزامات خاصی را بر روی نام فایل های کتابخانه اعمال می کند و در نتیجه سیستم ساخت این الزامات را برای جلوگیری از مشکلات کامپایل اعمال می کند. نام فایل خروجی باید با فرمت |
crate_name | این یک ویژگی لازم برای ماژول های تولید کتابخانه است. علاوه بر این، با نام فایل خروجی رابطه دارد. (به تعریف stem مراجعه کنید.) |
export_include_dirs | برای ماژولهای rust_ffi ، این ویژگی فهرستی از رشتهها را تعریف میکند که نشاندهنده مسیرهای نسبی شامل هستند: مسیرهایی که حاوی سرصفحههایی هستند که ماژولهای cc وابسته میتوانند استفاده کنند. |
پیوند rust_library یا rust_ffi
بهطور پیشفرض، ماژولهای کتابخانه Rust که دستگاههای هدف قرار میدهند، همیشه به صورت پویا با libstd
مرتبط میشوند. با این حال، ماژول های میزبان همیشه به صورت ایستا با libstd
مرتبط هستند.
پیوند مورد استفاده برای وابستگیهای rustlibs
به ترجیحات پیوند ماژول ریشه بستگی دارد. (به عنوان مثال، یک rust_binary
با prefer_rlib: true
از انواع کتابخانه Rust استفاده می کند که rustlibs
به عنوان rlibs
پیوند می دهند.)
برای اجازه دادن به تولید ماژولهای وابستگی ریشه که به هیچ کتابخانه زنگ پویا (مانند فایلهای اجرایی استاتیک) متکی نیستند، rlibs
انواع پیوندهای پویا و استاتیک libstd
را ارائه میکند. نوع صحیح به طور خودکار توسط Soong پیوند داده می شود.
دو نوع ماژول کتابخانه Rust وجود دارد، یکی که کتابخانه های Rust را تولید می کند و دیگری که کتابخانه های سازگار با C تولید می کند. علاوه بر این، برای اهداف ساخت سیستم میتوانید ماکروهای رویهای Rust ( proc-macros
) را به عنوان یک نوع کتابخانه خاص در نظر بگیرید.
rust_library
ماژول rust_library
کتابخانه های Rust را برای استفاده توسط سایر ماژول های Rust تولید می کند.
علاوه بر انواع _host
، کتابخانه های Rust دارای انواع ماژول هایی هستند که پیوند موجود را کنترل می کنند.
نوع ماژول کتابخانه 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، صفحه الگوهای زنگ اندروید را ببینید.
برای اطلاعات در مورد استفاده پیشرفته تر، از مستندات رسمی Rust دیدن کنید.
rust_proc_macro
ماکروهای رویهای Rust (proc-macros) میتوانند برای گسترش کامپایلر برای انجام تبدیل کد منبع یا ارائه ویژگیهای جدید مفید باشند. اطلاعات بیشتر در مورد آنها را می توانید در صفحه ماکروهای رویه ای اسناد رسمی Rust بیابید.
برای اهداف سیستم ساخت، ماژول rust_proc_macro
مشابه ماژول های rust_library
کار می کند. برای ماژول هایی که به rust_proc_macros
وابسته هستند، نام ماژول را به ویژگی proc_macros
اضافه کنید.
از آنجایی که proc_macros
افزونه های کامپایلر هستند، لزوماً میزبان را هدف قرار می دهند و هیچ کدی را تولید نمی کنند که روی دستگاه اجرا شود.
ویژگی های قابل توجه کتابخانه Rust
ویژگی های تعریف شده در جدول زیر علاوه بر ویژگی های مشترک مهم مهم است که برای همه ماژول ها اعمال می شود. اینها یا به ویژه برای ماژول های کتابخانه Rust مهم هستند، یا رفتار منحصر به فرد مخصوص نوع ماژول rust_library
را نشان می دهند.
ویژگی های کتابخانه Rust | تعریف |
---|---|
ساقه / نام | ویژگی stem نام فایل کتابخانه خروجی را کنترل می کند که در غیر این صورت به طور پیش فرض name گذاری می شود. کامپایلر Rust الزامات خاصی را بر روی نام فایل های کتابخانه اعمال می کند و در نتیجه سیستم ساخت این الزامات را برای جلوگیری از مشکلات کامپایل اعمال می کند. نام فایل خروجی باید با فرمت |
crate_name | این یک ویژگی لازم برای ماژول های تولید کتابخانه است. علاوه بر این، با نام فایل خروجی رابطه دارد. (به تعریف stem مراجعه کنید.) |
export_include_dirs | برای ماژولهای rust_ffi ، این ویژگی فهرستی از رشتهها را تعریف میکند که نشاندهنده مسیرهای نسبی شامل هستند: مسیرهایی که حاوی سرصفحههایی هستند که ماژولهای cc وابسته میتوانند استفاده کنند. |
پیوند rust_library یا rust_ffi
بهطور پیشفرض، ماژولهای کتابخانه Rust که دستگاههای هدف قرار میدهند، همیشه به صورت پویا با libstd
مرتبط میشوند. با این حال، ماژول های میزبان همیشه به صورت ایستا با libstd
مرتبط هستند.
پیوند مورد استفاده برای وابستگیهای rustlibs
به ترجیحات پیوند ماژول ریشه بستگی دارد. (به عنوان مثال، یک rust_binary
با prefer_rlib: true
از انواع کتابخانه Rust استفاده می کند که rustlibs
به عنوان rlibs
پیوند می دهند.)
برای اجازه دادن به تولید ماژولهای وابستگی ریشه که به هیچ کتابخانه زنگ پویا (مانند فایلهای اجرایی استاتیک) متکی نیستند، rlibs
انواع پیوندهای پویا و استاتیک libstd
را ارائه میکند. نوع صحیح به طور خودکار توسط Soong پیوند داده می شود.