সরাসরি প্রধান সামগ্রীতে চলে যান

রাস্ট প্রোগ্রামে প্যাকেজ এবং মডিউল দিয়ে কোড গুছিয়ে রাখা

রাস্ট (Rust) ল্যাঙ্গুয়েজে বড় প্রজেক্ট তৈরি করার সময় কোড যেন অগোছালো না হয়ে যায়, সেজন্য প্যাকেজ, ক্রেট (Crates) এবং মডিউল ব্যবহার করা হয়। এই ভিডিওতে পিয়ুষ গর্গ খুব সহজভাবে বুঝিয়েছেন কীভাবে আপনার রাস্ট কোডকে বিভিন্ন পার্ট বা মডিউলে ভাগ করে সুন্দরভাবে সাজানো যায়। বিশেষ করে জাভাস্ক্রিপ্ট ব্যাকগ্রাউন্ড থেকে যারা এসেছেন, তাদের জন্য রাস্টের এই মডিউল সিস্টেম কিছুটা আলাদা মনে হতে পারে, কিন্তু একবার বুঝে গেলে এটি অত্যন্ত শক্তিশালী।

মডিউল সিস্টেমের মূল ধারণা (Introduction to Module System)

ভিডিও রেফারেন্স: [05:09]

যখন আমাদের কোড বড় হতে থাকে, তখন একটি ফাইলে সব কোড রাখা অসম্ভব হয়ে পড়ে। রাস্টের মডিউল সিস্টেম আমাদের কোডকে ছোট ছোট লজিক্যাল অংশে ভাগ করতে সাহায্য করে। এর মূল ৪টি উপাদান হলো:

  • Packages: এটি একটি কার্গো ফিচার যা আপনাকে আপনার কোড বিল্ড এবং শেয়ার করতে দেয়।

  • Crates: মডিউলের একটি গাছ (tree) যা থেকে লাইব্রেরি বা এক্সিকিউটেবল ফাইল তৈরি হয়।

  • Modules: এটি কোডের অর্গানাইজেশন এবং প্রাইভেসি কন্ট্রোল করে।

  • Paths: কোনো আইটেম (যেমন স্ট্রাক্ট বা ফাংশন) খুঁজে বের করার রাস্তা।


প্যাকেজ এবং ক্রেট (Packages and Crates)

ভিডিও রেফারেন্স: [06:01]

ক্রেট দুই ধরণের হতে পারে: ১. Binary Crate: এটি রান করা যায় (যেমন main.rs), যাতে একটি main ফাংশন থাকে। ২. Library Crate: এটি সরাসরি রান করা যায় না (যেমন lib.rs), এটি অন্য কোডে ব্যবহার করার জন্য তৈরি করা হয়।

সহজ ব্যাখ্যা: * Crate (ক্রেট): মনে করুন এটি একটি ছোট কাঠের বাক্স যার ভেতরে কিছু কাজের জিনিস আছে।

  • Binary Crate: এমন বাক্স যেটা সরাসরি চালু করলে কাজ শুরু করে দেয়।

  • Library Crate: এমন বাক্স যেটা নিজে নিজে কিছু করে না, কিন্তু অন্য কেউ সেখান থেকে টুলস নিয়ে ব্যবহার করতে পারে।


মডিউল এবং কোড অর্গানাইজেশন (Organizing Code with Modules)

ভিডিও রেফারেন্স: [13:50]

কোডকে বিভিন্ন অংশে ভাগ করার জন্য mod কিওয়ার্ড ব্যবহার করা হয়। উদাহরণস্বরূপ, একটি অথেন্টিকেশন সার্ভিসে ডেটাবেস কানেকশন এবং লগইন লজিক আলাদা মডিউলে রাখা ভালো।

কোড উদাহরণ:

Rust

// lib.rs ফাইলে মডিউল তৈরি
pub mod database {
    pub enum Status {
        Connected,
        Interrupted,
    }

    pub fn connect_to_db() -> Status {
        println!("Connecting to DB...");
        Status::Connected
    }
}

pub mod auth_utils {
    pub fn login(user: String) {
        println!("User {} logged in", user);
    }
} 

ব্যাখ্যা: এখানে আমরা database এবং auth_utils নামে দুটি মডিউল তৈরি করেছি। pub কিওয়ার্ডটি ব্যবহার করা হয়েছে যেন এই ফাংশন বা এনামগুলো মডিউলের বাইরে থেকেও ব্যবহার করা যায়। রাস্টে সবকিছু ডিফল্টভাবে Private থাকে, তাই বাইরে ব্যবহারের জন্য Public (pub) করতে হয়।


কোডকে বিভিন্ন ফাইলে ভাগ করা (Splitting Code into Multiple Files)

ভিডিও রেফারেন্স: [28:44]

সব মডিউল এক ফাইলে না রেখে আলাদা .rs ফাইলে রাখা যায়। যেমন: ১. src/lib.rs ফাইলে শুধু মডিউলের ঘোষণা থাকবে: pub mod database; ২. src/database.rs ফাইলে ডেটাবেসের আসল কোড থাকবে।

গুরুত্বপূর্ণ কথা: রাস্টের কম্পাইলার নিজে থেকে সব ফাইল পড়ে না। আপনাকে মেইন ফাইল বা লিবে mod দিয়ে বলে দিতে হবে যে অন্য একটি ফাইল আছে।


কঠিন শব্দের সহজ ব্যাখ্যা

  • Encapsulation (এনক্যাপসুলেশন): কোডের কিছু অংশ লুকিয়ে রাখা যেন বাইরের কেউ সেটা নষ্ট করতে না পারে।

  • Scope (স্কোপ): কোনো ভেরিয়েবল বা ফাংশন কোথায় কোথায় ব্যবহার করা যাবে তার সীমানা।

  • Path (পাথ): কোডের এক জায়গা থেকে অন্য জায়গার ফাংশন ডাকার ঠিকানা (যেমন: crate::database::connect).


বিশ্লেষণ এবং আমার চিন্তা (Analysis & Perception)

কন্টেন্ট ক্রিয়েটর এখানে বোঝাতে চেয়েছেন যে, রাস্ট ল্যাঙ্গুয়েজ শুধু কোড লিখতেই শেখায় না, বরং কোডকে কীভাবে প্রফেশনাল উপায়ে ম্যানেজ করতে হয় তাও শেখায়।

আমার মতামত: ১. কেন এটি প্রয়োজন: বড় প্রজেক্টে যখন হাজার হাজার লাইন কোড হয়, তখন মডিউল ছাড়া কাজ করা অসম্ভব। ২. বিকল্প উপায়: রাস্টের পুরনো পদ্ধতিতে mod.rs ব্যবহার করা হতো, কিন্তু বর্তমানে ফাইল ভিত্তিক মডিউল সিস্টেম (যেমন database.rs) বেশি জনপ্রিয় এবং পরিষ্কার। ৩. পরামর্শ: আপনি যখন নতুন কোনো প্রজেক্ট শুরু করবেন, শুরুতেই সব কোড আলাদা ফাইলে না নিয়ে আগে একই ফাইলে মডিউল তৈরি করে দেখুন। কোড যখন ৫-৬টা মডিউলে পৌঁছে যাবে, তখন সেগুলোকে আলাদা ফাইলে সরিয়ে নিন। এতে কোড ম্যানেজ করা সহজ হবে।

রাস্টের এই মডিউল সিস্টেম শুরুতে একটু কঠিন মনে হতে পারে (বিশেষ করে pub কিওয়ার্ডের ব্যবহার), কিন্তু একবার অভ্যস্ত হয়ে গেলে আপনি আপনার কোডের ওপর পূর্ণ নিয়ন্ত্রণ পাবেন।

[

Packages and Crates | Rust Book

Piyush Garg · 3.4K views

](http://www.youtube.com/watch?v=SMcQ3kceDTo)

মন্তব্যসমূহ

এই ব্লগটি থেকে জনপ্রিয় পোস্টগুলি

সিজ্জিন (Sijjin) vs ইল্লিয়িন (Illiyin) পার্থক্য Difference

Sijjin (سِجِّين) এবং Illiyin (عِلِّيِّين) —এ দুটি শব্দ কুরআনে এসেছে এবং দুটোই মানুষের আমলনামা সংরক্ষণ সম্পর্কিত স্থানকে নির্দেশ করে। ১. সিজ্জিন (Sijjin) সিজ্জিন হলো পাপীদের (কাফের, মুনাফিক ও দুরাচারীদের) আমলনামা সংরক্ষণের স্থান। এটি সাত তলদেশের নীচে এক কারাগার বা অন্ধকার জগতে অবস্থিত বলে উল্লেখ রয়েছে। সূরা আল-মুতাফফিফীন (৮৩:৭-৯) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْفُجَّارِ لَفِي سِجِّينٍ ۝ وَمَا أَدْرَاكَ مَا سِجِّينٌ ۝ كِتَابٌ مَرْقُومٌ" অর্থ: "না, পাপীদের আমলনামা সিজ্জিনে সংরক্ষিত। তুমি কি জানো, সিজ্জিন কী? এটি এক লিখিত দলিল।" সিজ্জিনকে একটি কারাগার, সংকীর্ণ স্থান, বা নিচের স্তরে অবস্থিত এক অন্ধকার দুনিয়া হিসেবে ব্যাখ্যা করা হয়। ২. ইল্লিয়িন (Illiyin) ইল্লিয়িন হলো সৎকর্মশীলদের (মুমিন ও নেককারদের) আমলনামা সংরক্ষণের স্থান । এটি সপ্তম আসমানের ওপরে সংরক্ষিত এক সম্মানিত স্থান। সূরা আল-মুতাফফিফীন (৮৩:১৮-২১) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْأَبْرَارِ لَفِي عِلِّيِّينَ ۝ وَمَا أَدْرَاكَ مَا عِلِّيُّونَ ۝ كِتَابٌ مَرْقُومٌ ۝ يَش...

তারাবিহ সমগ্র - প্রথম আলো

রামাদান ২০২৪ উপলক্ষে প্রথম আলোর নিয়মিত আয়োজন - খতমে তারাবিহ'র সূরা গুলো নিয়ে সংক্ষিপ্ত আলোচনা'র লিংক  নিচে দেওয়া হলো।  লিংকে ক্লিক করলেই আপনাকে আলোচনা তে নিয়ে যাবে। তারাবিহ: ১ | একটি খুন ও গাভি নিয়ে বনি ইসরাইলের বাড়াবাড়ি তারাবিহ: ২ | নারীর মর্যাদা ও অধিকার এবং অলৌকিক তিন ঘটনা তারাবিহ: ৩ | যে ১৪ নারীকে বিয়ে করা হারাম তারাবিতে: ১২ | মহানবী (সা.)–এর আকাশভ্রমণ এবং আসহাবে কাহাফের কাহিনি

রেডমি নোট ৯ এর বিস্তারিত | Redmi Note 9 in Bangla

৩০ এপ্রিল, ২০২০ এ শাওমির ঘোষনা আসে এই ফোনটি নিয়ে। কিন্তু ফোনটি মার্কেটে আসে মে মাসের শেষের দিকে৷ করোনার কারনে ফোনটি বাংলাদেশে আসতে আরো সময় নেয়। বর্তমানে বাংলাদেশে আন অফিশিয়াল ভাবে ফোনটি পাওয়া যাচ্ছে৷ বাংলাদেশে অফিশিয়াল ভাবে এখনো ফোনটি আসার তথ্য নেয়৷ চলুন ফোনটি নিয়ে বিস্তারিত আলোচনা করা যাক। শাওমি নোট সিরিজের ফোন বের করে এদের রেডমি নামে সাব ব্যান্ড৷ এদের কাজ হল এই নোট সিরিজ নিয়ে কাজ করা৷ প্রতিবছর নোট সিরিজের ১/২ টা ফোন বাজারে আসে। সাথে সেই ফোন গুলার বিভিন্ন ভার্সন (যেমন - র‍্যাম ও রমের ভিত্তিতে) বাজারে আসে। এই বছরও তারা রেডমি সিরিজের নোট ৯ বাজারে আনে। এই বছর হয়তো এই সিরিজের আরো ফোন বাজারে আসবে। ডিস্পলেঃ ফোনটির ডিসপ্লে সাইজ ৬.৫৩ ইঞ্চি। এতে আইপিএস এলসিডি ডিসপ্লে ব্যবহার করা হয়েছে। এই ফোনের ডিসপ্লে প্রটেকশন হিসেবে আছে গরিলা গ্লাস ফাইভ। স্ক্রিন আর ফোনের বডির অনুপাত প্রায় ৮৩.৫%। এই ফোনের ডিসপ্লে ফুলএইচডি মানে ১০৮০পি। এই ডিস্পলের দৈর্ঘ্য ১৯.৫ একক এবং প্রস্থ হল ৯ একক। এত বড় ফোনের কারনে এই ফোনের পিপি আই ডেনসিটি ৩৯৫। যা একটু কম। প্লাটফর্মঃ এই ফোনের অপারেটিং সিস্টেম এন্ড্রয়েড ১০ এবং এর...