ভূমিকা যদিও মরিচা তার মরিচা বই সরবরাহ করে, আমি কীওয়ার্ড বোঝার সাথে লড়াই করেছি। আমি নিজেকে জিজ্ঞাসা করলাম, "আমিই কি একমাত্র এই সমস্যাটি আছে?" একটি দ্রুত Google অনুসন্ধান নিশ্চিত করেছে যে আমি একা নই। mut ফলস্বরূপ, আমি কীওয়ার্ডের বিশদ ব্যাখ্যা প্রদানের জন্য এই নিবন্ধটি লেখার সিদ্ধান্ত নিয়েছি। এই নিবন্ধটি তাদের জন্য যারা পাইথন বা জাভাস্ক্রিপ্টের মতো উচ্চ-স্তরের ভাষা থেকে এসেছেন। mut ভেরিয়েবল Rust এ একটি অপরিবর্তনীয় ভেরিয়েবল তৈরি করতে, শুধু লিখুন। এটা সোজা. আপনি যদি এমন একটি ভেরিয়েবল তৈরি করতে চান যা পরে মিউটেশন করা যায়, তাহলে এর পরে কীওয়ার্ড যোগ করুন। মরিচা একটি সহায়ক সম্মেলন আছে যা উদ্দেশ্যের স্পষ্টতাকে উৎসাহিত করে। let x = 1337 let mut কীওয়ার্ড যোগ করলে অন্যদের জানানো হয় যে এই ভেরিয়েবলটি কোডের অন্য কোথাও পরিবর্তন করা হবে। ঠিক আছে. mut এর কল্পনা করা যাক. এখানে দুটি ভেরিয়েবল, এবং । let mut x = 1337 let y = 42 উল্লেখ এই মুহুর্তে, সবকিছু সোজা। যাইহোক, রেফারেন্স ব্যবহার করার সময় জিনিসগুলি একটু কোঁকড়া হতে শুরু করে। এর কিছু তৈরি করা যাক. mut let mut x = 1337; let y = 42; let x_ref = &mut x; let y_ref = &y; আমি দুটি রেফারেন্স তৈরি করেছি (বা মরিচা পরিপ্রেক্ষিতে "ধার করা")। তাদের মধ্যে একটি পরিবর্তনযোগ্য রেফারেন্স, এবং অন্যটি শুধুমাত্র পঠনযোগ্য রেফারেন্স। এর জন্য আবার একটি স্কিম তৈরি করা যাক। প্রদত্ত স্কিমে, আমার কাছে 4টি ভেরিয়েবল রয়েছে, যার মধ্যে 2টি রেফারেন্স। উভয় রেফারেন্স ভেরিয়েবল অপরিবর্তনীয় এবং এর পরে কীওয়ার্ড নেই, যার মানে তারা যা নির্দেশ করে তা আমি পরিবর্তন করতে পারি না। যাইহোক, আমি এখনও তাদের উল্লেখ করা মান পরিবর্তন করতে পারি। let mut *x_ref = 777; আপনি যদি এটি লেখেন, তাহলে মরিচা কম্পাইলার অভিযোগ করবে না এবং এর মান (রেফ নিজেই নয়) এ পরিবর্তিত হবে। যাইহোক, স্কিমটিতে একটি লাল বর্গক্ষেত্র রয়েছে যা নির্দেশ করে যে পরিবর্তনযোগ্যতার বিকল্প নেই। সুতরাং, কেন আমি এটি উল্লেখ করা মান পরিবর্তন করতে পারি? x 777 x_ref আসুন এর স্কিমে ফিরে আসি। let x_ref = &mut x প্রথম সাদা ব্লকের নামটি রয়েছে: । দ্বিতীয় এক যে পরিবর্তনশীল সংরক্ষিত টাইপ সম্পর্কে আমাকে অবহিত. এর সম্পূর্ণ আকারে, কোন অন্তর্নিহিত টাইপ টীকা ছাড়াই, আমি নিম্নরূপ লিখতে পারি: x_ref let x_ref: &mut i32 = &mut x; আমি এটিকে এভাবে ব্যাখ্যা করতে পারি: আসুন নামে একটি তৈরি করি যা এর একটি ধারণ করবে এবং ভেরিয়েবলের মানের দিয়ে অবিলম্বে এটিকে আরম্ভ করবে। x_ref অপরিবর্তনীয় ভেরিয়েবল i32 পরিবর্তনযোগ্য রেফারেন্স x i32 পরিবর্তনযোগ্য রেফারেন্স এর মানে আমি যে মানটি নির্দেশ করে তা পরিবর্তন করতে পারি, কিন্তু আমি রেফারেন্সের মান (বা ঠিকানা) পরিবর্তন করতে পারি না। অন্য কথায়, আমি এরকম কিছু লিখতে পারি না: let x_ref: &mut i32 = &mut x; let mut z = 0; x_ref = &mut z; // Not allowed! স্কিমগুলির পরিপ্রেক্ষিতে, আমি উপরের কোড ব্লকে তীর নির্দেশিত দিকটি পরিবর্তন করতে চাই। যাইহোক, ভেরিয়েবল পরিবর্তনযোগ্য হলেও, আমি তীরটি পরিবর্তন করতে পারি না কারণ সমস্যাটি এর অপরিবর্তনীয়তার মধ্যে রয়েছে। z x_ref তীরের দিক পরিবর্তন করতে, আমাকে ভেরিয়েবলে সংরক্ষিত ঠিকানা পরিবর্তন করতে হবে। যাইহোক, আমি এটি করতে পারি না কারণ পরিবর্তনশীলটি অপরিবর্তনীয়। x_ref চল এটা করি! let mut x: i32 = 1337; let mut x_ref: &mut i32 = &mut x; // I've added mut before x_ref let mut z = 0; x_ref = &mut z; // Allowed! এখানে আশেপাশে অনেকগুলি উদাহরণ রয়েছে, তাই না? আসুন তাদের বর্ণনা করি। x_ref mut : আমি নামে একটি পরিবর্তনযোগ্য ভেরিয়েবল তৈরি করছি, যার মানে আমি পরে এর মান পরিবর্তন করতে পারি। let mut x_ref x_ref : আমি বলছি যে ভেরিয়েবলটিতে প্রকারের কিছু মানের পরিবর্তনযোগ্য রেফারেন্স(গুলি) থাকবে। &mut i32 i32 : আমি পরিবর্তনশীল ধার করছি (এর একটি রেফারেন্স পাচ্ছি)। &mut x x তারপর, আমি নামের একটি ভেরিয়েবল তৈরি করেছি এবং এটিকে এর মান নির্ধারণ করেছি। পরে, যখন আমি লিখি, তখন আমি ইঙ্গিত দিয়েছিলাম যে আমি একটি পরিবর্তনযোগ্য পরিবর্তনশীল যা শুধুমাত্র মানের রেফারেন্স ধারণ করতে পারে। z 0 x_ref = &mut z x_ref i32 যেহেতু এর ধরন , তাই আমি ভেরিয়েবলে এর ঠিকানা বরাদ্দ করতে পারি। এর ঠিকানা পেতে, আমি সিনট্যাক্স ব্যবহার করেছি। z i32 x_ref z &mut z স্কিম। মানসিক কৌশল একবার দেখুন বিবৃতিতে, এটি কিছুটা সুস্পষ্ট দেখাতে পারে, কিন্তু… = let mut x_ref = &mut x; … আমি এটিকে একটি বিভাজক হিসাবে দেখি (বিশেষত যদি আপনি এটিকে 90 ডিগ্রি দ্বারা ঘোরান) যা বিবৃতিটিকে দুটি উপ-বিবৃতিতে বিভক্ত করে: বাম এবং ডান। বাম দিকটি তথ্য প্রদান করে, যখন ডান দিকটি আমাদের বলে। ভেরিয়েবল সম্পর্কে মান সম্পর্কে যখন আমি মান পরিবর্তন করতে dereference অপারেটর ব্যবহার করি... * *x_ref = 100; ... আমি ভেরিয়েবলের মান পরিবর্তন করি না। পরিবর্তে, আমি রেফারেন্স করা মান পরিবর্তন করছি। x_ref x_ref অপরিবর্তনীয় রেফারেন্স আমি আগে প্রায়ই ব্যবহার. আমি তাদের কিছু বাদ দিলে কি হবে? mut let i = 1; let j = 2; let mut k = &i; আমি কি এখানে এর মান পরিবর্তন করতে পারি? বিভাজক কৌশল ব্যবহার করে, উত্তর দেওয়া বেশ সহজ। আমি এর মান পরিবর্তন করতে পারি (আমি বাম দিকে দেখতে পাচ্ছি), কিন্তু মান (ডান দিকে) এর একটি অপরিবর্তনীয় রেফারেন্স (এখানে কোন নেই)। i k mut i mut তাই… let i = 1; let j = 2; let mut k = &i; k = &j; // This is legal. *k = 3; // This is not. স্কিম। উপসংহার এই নিবন্ধে, আমরা কীওয়ার্ড এবং রেফারেন্সের সূক্ষ্মতাগুলিকে ব্যবচ্ছেদ করেছি। মনে রাখবেন, একটি এবং একটি রেফারেন্স ধারণ করা একটি মধ্যে একটি পার্থক্য রয়েছে। আমাদের কৌশল? mut পরিবর্তনযোগ্য রেফারেন্স পরিবর্তনযোগ্য পরিবর্তনশীলের রাস্টে অ্যাসাইনমেন্টগুলি আরও ভালভাবে বোঝার জন্য মানসিক বিভাজক হিসাবে চিহ্নটি ব্যবহার করা। এই সহজ ভিজ্যুয়ালাইজেশন অনেক বিভ্রান্তি পরিষ্কার করতে পারে। = শুভ কোডিং!