রাস্ট লাইব্রেরি মডিউল দুই প্রকারের হয়: একটি যা রাস্ট লাইব্রেরি তৈরি করে এবং অন্যটি যা সি-কম্প্যাটিবল লাইব্রেরি তৈরি করে। এছাড়াও, বিল্ড সিস্টেমের উদ্দেশ্যে রাস্ট প্রসিডিউরাল ম্যাক্রো ( proc-macros )-কে এক বিশেষ ধরনের লাইব্রেরি হিসেবে বিবেচনা করা যেতে পারে।
রাস্ট_লাইব্রেরি
rust_library মডিউলটি অন্যান্য রাস্ট মডিউলের ব্যবহারের জন্য রাস্ট লাইব্রেরি তৈরি করে।
_host ভ্যারিয়েন্টগুলো ছাড়াও, রাস্ট লাইব্রেরিগুলোতে মডিউল টাইপ থাকে যা উপলব্ধ লিঙ্কেজ নিয়ন্ত্রণ করে।
| রাস্ট লাইব্রেরি মডিউল টাইপ | সংজ্ঞা |
|---|---|
| রাস্ট_লাইব্রেরি | এটি rlib এবং dylib উভয় লাইব্রেরি ভ্যারিয়েন্টই প্রদান করে। AOSP রাস্ট লাইব্রেরির জন্য এই মডিউল টাইপটি সুপারিশ করে, কারণ এটি মডিউলগুলোকে rustlibs প্রপার্টির অধীনে ডিপেন্ডেন্সি হিসেবে তালিকাভুক্ত করা হলে সঠিকভাবে কাজ করতে দেয়। |
| রাস্ট_লাইব্রেরি_আরলিব | একটি রাস্ট লাইব্রেরির শুধুমাত্র rlib সংস্করণটি প্রদান করে; যে মডিউলগুলো কেবল rlib সংস্করণ প্রদান করে, সেগুলো rustlibs প্রপার্টির সাথে কাজ করবেই এমন নিশ্চয়তা দেওয়া যায় না। |
| রাস্ট_লাইব্রেরি_ডাইলিব | একটি রাস্ট লাইব্রেরির শুধুমাত্র dylib সংস্করণটি প্রদান করে; যে মডিউলগুলো কেবল dylib সংস্করণ প্রদান করে, সেগুলো rustlibs প্রপার্টির সাথে কাজ করবেই এমন নিশ্চয়তা দেওয়া যায় না। |
রাস্ট_এফএফআই
rust_ffi মডিউলটি CC মডিউলগুলির সাথে আন্তঃক্রিয়া করার জন্য C-উপযোগী লাইব্রেরি তৈরি করে।
_host ভ্যারিয়েন্টগুলো ছাড়াও, রাস্ট FFI লাইব্রেরিগুলোতে মডিউল টাইপ রয়েছে যা উপলব্ধ লিঙ্কেজ নিয়ন্ত্রণ করে, যা নিম্নলিখিত সারণীতে দেখানো হয়েছে।
| রাস্ট এফএফআই লাইব্রেরি মডিউল টাইপ | সংজ্ঞা |
|---|---|
| রাস্ট_এফএফআই | সি লাইব্রেরির উভয় সংস্করণই প্রদান করে: স্ট্যাটিক এবং শেয়ার্ড। |
| rust_ffi_shared | শুধুমাত্র C শেয়ার্ড লাইব্রেরি সংস্করণটি প্রদান করে। |
| rust_ffi_static | শুধুমাত্র সি স্ট্যাটিক লাইব্রেরি সংস্করণটি প্রদান করে। |
C থেকে Rust কল করার জন্য rust_ffi ব্যবহারের একটি প্রাথমিক উদাহরণের জন্য, Android Rust Patterns পৃষ্ঠাটি দেখুন।
আরও উন্নত ব্যবহার সম্পর্কে তথ্যের জন্য, অফিসিয়াল রাস্ট ডকুমেন্টেশন দেখুন।
rust_proc_macro
রাস্ট প্রসিডিউরাল ম্যাক্রো (proc-macros) সোর্স কোড রূপান্তর সম্পাদন করতে বা নতুন অ্যাট্রিবিউট যোগ করতে কম্পাইলারের কার্যকারিতা বাড়াতে সহায়ক হতে পারে। অফিসিয়াল রাস্ট ডকুমেন্টেশনের ' প্রসিডিউরাল ম্যাক্রোস' পৃষ্ঠায় এ সম্পর্কে আরও তথ্য পাওয়া যাবে।
বিল্ড সিস্টেমের জন্য, rust_proc_macro মডিউলটি rust_library মডিউলগুলোর মতোই কাজ করে। যে মডিউলগুলো rust_proc_macros উপর নির্ভরশীল, সেগুলোর proc_macros প্রপার্টিতে মডিউলের নামটি যোগ করুন।
যেহেতু proc_macros হলো কম্পাইলার প্লাগইন, তাই এগুলো আবশ্যিকভাবে হোস্টকে লক্ষ্য করে এবং এমন কোনো কোড তৈরি করে না যা কোনো ডিভাইসে চলতে পারে।
উল্লেখযোগ্য রাস্ট লাইব্রেরি প্রোপার্টি
নিচের সারণীতে সংজ্ঞায়িত বৈশিষ্ট্যগুলি সকল মডিউলের জন্য প্রযোজ্য গুরুত্বপূর্ণ সাধারণ বৈশিষ্ট্যগুলির অতিরিক্ত। এগুলি হয় রাস্ট লাইব্রেরি মডিউলগুলির জন্য বিশেষভাবে গুরুত্বপূর্ণ, অথবা rust_library মডিউল প্রকারের জন্য নির্দিষ্ট অনন্য আচরণ প্রদর্শন করে।
| রাস্ট লাইব্রেরির বৈশিষ্ট্য | সংজ্ঞা |
|---|---|
| কাণ্ড / নাম | stem প্রপার্টিটি আউটপুট লাইব্রেরির ফাইলের নাম নিয়ন্ত্রণ করে, যা ডিফল্টভাবে ` name হয়। রাস্ট কম্পাইলার লাইব্রেরি ফাইলের নামের উপর কিছু নির্দিষ্ট শর্ত আরোপ করে, এবং ফলস্বরূপ বিল্ড সিস্টেম কম্পাইলেশন সংক্রান্ত সমস্যা এড়ানোর জন্য এই শর্তগুলো প্রয়োগ করে। আউটপুট ফাইলের নাম অবশ্যই |
| ক্রেট_নাম | লাইব্রেরি উৎপাদনকারী মডিউলগুলোর জন্য এটি একটি আবশ্যকীয় প্রপার্টি; এর সাথে আউটপুট ফাইলের নামেরও একটি সম্পর্ক রয়েছে। ( stem ডেফিনিশন দেখুন।) |
| এক্সপোর্ট_ইনক্লুড_ডিরস | rust_ffi মডিউলগুলির জন্য, এই প্রপার্টিটি আপেক্ষিক ইনক্লুড পাথগুলির প্রতিনিধিত্বকারী স্ট্রিংগুলির একটি তালিকা নির্ধারণ করে: যে পাথগুলিতে এমন হেডার থাকে যা নির্ভরশীল cc মডিউলগুলি ব্যবহার করতে পারে। |
rust_library অথবা rust_ffi এর সংযোগ
ডিফল্টরূপে, ডিভাইস-ভিত্তিক রাস্ট লাইব্রেরি মডিউলগুলো সর্বদা libstd সাথে ডাইনামিক্যালি লিঙ্ক করা হয়। তবে, হোস্ট মডিউলগুলো সর্বদা libstd সাথে স্ট্যাটিকালি লিঙ্ক করা হয়।
rustlibs নির্ভরতার জন্য ব্যবহৃত লিঙ্কেজ রুট মডিউলের লিঙ্কেজ প্রেফারেন্সের উপর নির্ভর করে। (উদাহরণস্বরূপ, prefer_rlib: true সহ একটি rust_binary রাস্ট লাইব্রেরির এমন ভ্যারিয়েন্ট ব্যবহার করবে যা rustlibs rlibs হিসেবে লিঙ্ক করে।)
এমন রুট ডিপেন্ডেন্সি মডিউল তৈরির সুযোগ দিতে, যেগুলো কোনো ডাইনামিক রাস্ট লাইব্রেরির ওপর নির্ভর করে না (যেমন স্ট্যাটিক এক্সিকিউটেবল), rlibs ডাইনামিক এবং স্ট্যাটিক উভয় প্রকার libstd লিঙ্কেজ ভ্যারিয়েন্ট সরবরাহ করে। Soong স্বয়ংক্রিয়ভাবে সঠিক ভ্যারিয়েন্টটি লিঙ্ক করে দেয়।