টাইপ অনুমান

একটি ভ্যারিয়েবল কিভাবে ব্যবহার করা হচ্ছে তা দেখে রাস্ট সেটির টাইপ ঠিক করবে:

fn takes_u32(x: u32) {
    println!("u32: {x}");
}

fn takes_i8(y: i8) {
    println!("i8: {y}");
}

fn main() {
    let x = 10;
    let y = 20;

    takes_u32(x);
    takes_i8(y);
    // takes_u32(y);
}
This slide should take about 3 minutes.

এই স্লাইডটি দেখায় যে কীভাবে রাস্টের কম্পাইলার একটি ভ্যারিয়েবলের পরিবর্তনশীল ঘোষণা এবং ব্যবহার দ্বারা সীমাবদ্ধতার উপর ভিত্তি করে সেটির টাইপ অনুমান করে।

এটা জোর দেওয়া খুবই গুরুত্বপূর্ণ যে এইরকম ঘোষিত ভেরিয়েবলগুলি কোন ধরণের ডাইনামিক "যেকোন ধরণের" নয় যা কোনও ডেটা ধারণ করতে পারে। এই ধরনের ঘোষণা দ্বারা উত্পন্ন মেশিন কোড একটি টাইপ-এর সুস্পষ্ট ঘোষণার অনুরূপ। কম্পাইলার আমাদের জন্য এই কাজ করে এবং আমাদের আরও সংক্ষিপ্ত কোড লিখতে সাহায্য করে।

যখন কোন কিছুই পূর্ণসংখ্যার আক্ষরিকের ধরণকে বাধা দেয় না, তখন রাস্ট সেটাকে i32 হিসাবে ভেবে নিয়ে কাজ করে। এটি কখনও কখনও ত্রুটি বার্তাগুলিতে {integer} হিসাবে প্রদর্শিত হয়। একইভাবে, ফ্লোটিং-পয়েন্ট লিটারাল কে f64 এ ভেবে নেওয়া হয়ে।

fn main() {
    let x = 3.14;
    let y = 20;
    assert_eq!(x, y);
    // ERROR: no implementation for `{float} == {integer}`
}