ইন্ট্রোডাকশন: এই ভিডিওতে মূলত Rust প্রোগ্রামিং ল্যাঙ্গুয়েজের "মডিউল সিস্টেম" নিয়ে আলোচনা করা হয়েছে। বড় বড় প্রোজেক্টে যখন হাজার হাজার লাইন কোড থাকে, তখন সেগুলোকে আলাদা আলাদা ফাইল বা ফোল্ডারে গুছিয়ে রাখা এবং কোন কোডটি বাইরের মানুষ দেখতে পারবে বা পারবে না (Privacy) তা নিয়ন্ত্রণ করা শিখিয়েছেন পীযূষ গর্গ। এটি মূলত Rust Book-এর একটি চ্যাপ্টারের সহজ ব্যাখ্যা।
মডিউল চিট শিট (Module Cheat Sheet)
ভিডিও রেফারেন্স: [00:21]
মডিউল সিস্টেম বোঝার জন্য কিছু বেসিক রুলস আছে যা শুরুতে জেনে নেওয়া ভালো:
-
Crate Root: যখন আমরা কোড কম্পাইল করি, Rust প্রথমে
src/main.rs(বাইনারি ক্রেটের জন্য) অথবাsrc/lib.rs(লাইব্রেরি ক্রেটের জন্য) ফাইলে খোঁজে। -
Declaring Modules: কোডের ভেতর
mod garden;লিখলে Rust বুঝে নেয় যেgardenনামে একটি মডিউল আছে। এটি হয় ওই ফাইলের ভেতরেই থাকতে হবে অথবাgarden.rsনামে আলাদা ফাইলে থাকতে হবে। -
Sub-modules: মডিউলের ভেতর আরও মডিউল থাকতে পারে। যেমন বাগানের ভেতর সবজি (
mod vegetables;) থাকতে পারে।
সহজ ভাষায় ব্যাখ্যা: মডিউল হলো একটি ড্রয়ারের মতো। আপনি আপনার জামাকাপড় যেমন আলাদা আলাদা ড্রয়ারে রাখেন, তেমনি কোডগুলোও মডিউলের ভেতর সাজিয়ে রাখা হয়।
পাবলিক বনাম প্রাইভেট (Public vs Private)
ভিডিও রেফারেন্স: [04:16]
Rust-এ ডিফল্টভাবে সবকিছু Private থাকে। এর মানে হলো, এক মডিউলের কোড অন্য মডিউল থেকে সরাসরি দেখা যায় না।
- pub keyword: কোনো ফাংশন, স্ট্রাক্ট (Struct) বা মডিউলকে যদি আপনি বাইরে থেকে ব্যবহার করতে দিতে চান, তবে তার আগে
pubলিখতে হয়।
কঠিন শব্দ:
-
Privacy: কোড লুকিয়ে রাখা বা কার কাছে অ্যাক্সেস থাকবে তা ঠিক করা।
-
Encapsulation: ভেতরের কাজ বাইরে থেকে আড়াল করে শুধু দরকারি অংশটুকু দেখানো।
পাথ বা রাস্তার ব্যবহার (Paths in Module Tree)
ভিডিও রেফারেন্স: [12:36]
মডিউলের ভেতরের কোনো ফাংশনকে কল করতে হলে আমাদের "পাথ" ব্যবহার করতে হয়। এটি দুই ধরণের:
-
Absolute Path: একদম শুরু (
crate) থেকে শুরু হয়। যেমন:crate::front_of_house::hosting::add_to_waitlist(). -
Relative Path: বর্তমানে আপনি যেখানে আছেন সেখান থেকে শুরু হয়। যেমন:
super::serving::take_order().
আমার চিন্তা: এটি অনেকটা কম্পিউটারের ফাইল ফোল্ডারের মতো। আপনি যেমন C:/Users/Documents/file.txt লিখেন, Rust-এও তেমনি কোডের ঠিকানায় যেতে হয়।
Use কিওয়ার্ডের জাদু
ভিডিও রেফারেন্স: [25:24]
বারবার বড় বড় পাথ লেখা অনেক বিরক্তিকর। এই সমস্যার সমাধান হলো use কিওয়ার্ড।
- এটি ব্যবহার করে আপনি কোনো মডিউল বা ফাংশনকে শর্টকাট হিসেবে আপনার স্কোপে নিয়ে আসতে পারেন।
Rust
// বারবার crate::front_of_house::hosting লিখতে হবে না
use crate::front_of_house::hosting;
fn main() {
hosting::add_to_waitlist(); // এখন সরাসরি ব্যবহার করা যাচ্ছে
}
এই কোড থেকে আমরা কী পেলাম? এই কোডটি আমাদের কাজের সময় বাঁচায় এবং কোডকে পরিষ্কার রাখে। বড় বড় অ্যাড্রেস বারবার লিখতে হয় না।
স্ট্রাক্ট এবং ইনাম-এর প্রাইভেসি (Struct & Enum Privacy)
ভিডিও রেফারেন্স: [21:46]
-
Struct: যদি কোনো স্ট্রাক্টকে
pubকরা হয়, তার ভেতরের ফিল্ডগুলো তবুও প্রাইভেট থাকে। প্রত্যেকটি ফিল্ডকে আলাদাভাবেpubকরতে হয়। -
Enum: ইনামকে
pubকরলে এর ভেতরের সব অপশন (Variants) অটোমেটিক পাবলিক হয়ে যায়।
কোডিং উদাহরণ:
Rust
mod back_of_house {
pub struct Breakfast {
pub toast: String, // এটি পাবলিক
seasonal_fruit: String, // এটি প্রাইভেট
}
impl Breakfast {
pub fn summer(toast: &str) -> Breakfast {
Breakfast {
toast: String::from(toast),
seasonal_fruit: String::from("peaches"),
}
}
}
}
ব্যাখ্যা: এখানে আপনি ব্রেকফাস্টের 'টোস্ট' কী হবে তা বাইরে থেকে ঠিক করতে পারবেন, কিন্তু 'ফল' কী দেওয়া হবে তা শুধু হোটেলের ভেতরের লোক (মডিউল) ঠিক করতে পারবে।
অ্যানালাইসিস ও আমার মতামত
বিশ্লেষণ: কন্টেন্ট ক্রিয়েটর এখানে বোঝাতে চেয়েছেন যে Rust-এ কোড গুছিয়ে রাখা এবং সিকিউরিটি (Privacy) কতটা গুরুত্বপূর্ণ। বিশেষ করে pub কীওয়ার্ডের সঠিক ব্যবহার না জানলে কোড রান করা কঠিন হয়ে পড়ে।
বাস্তবতার নিরিখে পারসেপশন: শুরুতে এই মডিউল সিস্টেম এবং পাথ (crate, super, self) একটু গোলমেলে মনে হতে পারে, কারণ এটি জাভা বা পাইথনের চেয়ে কিছুটা আলাদা। তবে একবার বুঝে গেলে এটি কোডকে অনেক বেশি সুরক্ষিত করে।
পরামর্শ: ১. যেকোনো প্রোজেক্ট শুরু করার সময় শুরুতেই lib.rs এবং main.rs-কে আলাদা করে ফেলার অভ্যাস করুন। ২. সরাসরি সব ফাইল এক ফোল্ডারে না রেখে ছোট ছোট মডিউলে ভাগ করুন। ৩. কোড প্র্যাকটিস করার সময় cargo modules টুলটি ব্যবহার করে দেখতে পারেন আপনার মডিউল ট্রি ঠিক আছে কি না।
বিকল্প ব্যবস্থা: আপনি যদি খুব ছোট স্ক্রিপ্ট লেখেন, তবে মডিউল নিয়ে মাথা না ঘামালেও চলে। কিন্তু যখনই প্রোজেক্টটি বড় হবে, তখন মডিউল ছাড়া কোড মেইনটেইন করা অসম্ভব হয়ে পড়বে।
লিঙ্ক- https://www.youtube.com/watch?v=-CkD-mNVVws
[
Defining Modules to Control Scope and Privacy | Rust Book
Piyush Garg · 3.4K views
](http://www.youtube.com/watch?v=-CkD-mNVVws)

মন্তব্যসমূহ
একটি মন্তব্য পোস্ট করুন
আপনার সমস্যাটি কমেন্ট করে আমাদের জানান :-d