۲. متغیرها و انواع داده در Rust

۲.۱. تعریف متغیر در Rust

در Rust متغیرها به‌صورت پیش‌فرض immutable (تغییرناپذیر) هستند. برای تعریف متغیر، از let استفاده می‌کنیم:

fn main() {
    let x = 5; // مقدار x تغییرناپذیر است
    println!("مقدار x برابر است با: {}", x);
}

🔹 اگر بخواهیم مقدار متغیر را تغییر دهیم، باید mut را اضافه کنیم:

fn main() {
    let mut y = 10;
    println!("قبل از تغییر: {}", y);
    
    y = 20; // مقدار جدید
    println!("بعد از تغییر: {}", y);
}

📌 اگر mut را اضافه نکنیم، Rust هنگام تغییر مقدار خطا می‌دهد.


۲.۲. انواع داده در Rust

Rust یک زبان سیستم‌تایپ (strongly typed) است و انواع داده را به‌خوبی مدیریت می‌کند.

۲.۲.۱. انواع عددی

  • i32 (عدد صحیح ۳۲ بیتی، مثبت و منفی)
  • u32 (عدد صحیح بدون علامت ۳۲ بیتی، فقط مثبت)
  • f32 و f64 (اعداد اعشاری)
fn main() {
    let a: i32 = -10;
    let b: u32 = 42;
    let c: f64 = 3.14;
    
    println!("{} {} {}", a, b, c);
}

۲.۲.۲. نوع Boolean (bool)

fn main() {
    let is_rust_fun = true;
    println!("آیا Rust زبان جذابی است؟ {}", is_rust_fun);
}

۲.۲.۳. نوع char

  • char در Rust از یونی‌کد (Unicode) پشتیبانی می‌کند:
fn main() {
    let smiley: char = '😊';
    println!("شخصیت انتخابی: {}", smiley);
}

۲.۳. ثابت‌ها (const و static)

در Rust می‌توان ثابت‌ها را با const یا static تعریف کرد:

const PI: f64 = 3.1415;
static GREETING: &str = "سلام به دنیای Rust!";

fn main() {
    println!("{}", PI);
    println!("{}", GREETING);
}

🔹 تفاوت const و static:

  • const مقدارش ثابت و تغییرناپذیر است.
  • static در کل برنامه یک کپی از مقدارش را نگه می‌دارد.

۳. عملگرها در Rust

Rust از عملگرهای استاندارد پشتیبانی می‌کند:

نوععملگرها
جمع، تفریق، ضرب، تقسیم+, -, *, /, %
مقایسه‌ای==, !=, <, >, <=, >=
منطقی&&, `
fn main() {
    let a = 10;
    let b = 3;
    
    println!("جمع: {}", a + b);
    println!("باقی‌مانده: {}", a % b);
    println!("مقایسه: {}", a > b);
}

💡 تمرین:
۱. برنامه‌ای بنویسید که دو عدد از ورودی دریافت کند و عملیات جمع، تفریق، ضرب و تقسیم روی آن‌ها انجام دهد.
۲. متغیری تعریف کنید که مقدارش true باشد و سپس مقدار آن را تغییر دهید.

🚀 اگر آماده‌اید، می‌توانیم ساختارهای کنترلی (مثل if, loop, match) را در درس بعدی بررسی کنیم. 😎

دیدگاهتان را بنویسید