۵

Structs و Enums

یاد می‌گیریم چطور ساختارهای داده سفارشی خودمون رو بسازیم.

Structs: ساختن نوع‌های سفارشی

`struct` (کوتاه شده‌ی structure) بهمون اجازه می‌ده چندتا مقدار مرتبط رو با هم گروه‌بندی کنیم و براشون یه اسم بذاریم. مثل ساختن یه قالب جدید برای داده‌ها.

// تعریف یک struct برای کاربر
struct User {
    username: String,
    email: String,
    active: bool,
    sign_in_count: u64,
}

fn main() {
    // ساختن یک نمونه (instance) از User
    let mut user1 = User {
        email: String::from("user@example.com"),
        username: String::from("user123"),
        active: true,
        sign_in_count: 1,
    };

    // دسترسی و تغییر فیلدها
    user1.email = String::from("new.email@example.com");
    println!("Username is: {}", user1.username);
}

Enums: تعریف حالت‌های مختلف

`enum` (کوتاه شده‌ی enumeration) بهمون اجازه می‌ده یه نوع رو تعریف کنیم که می‌تونه یکی از چند "حالت" (variant) ممکن باشه. مثلاً وضعیت یه پیام می‌تونه "ارسال شده"، "دیده شده" یا "در حال نوشتن" باشه.

enum Message {
    Quit,
    Move { x: i32, y: i32 },
    Write(String),
    ChangeColor(i32, i32, i32),
}

fn main() {
    let msg1 = Message::Write(String::from("سلام"));
    let msg2 = Message::Move { x: 10, y: 20 };
}

دو تا از مهم‌ترین `enum`ها در Rust، `Option` (برای مقادیری که ممکنه وجود نداشته باشن) و `Result` (برای عملیاتی که ممکنه خطا بدن) هستن که در درس‌های بعدی بیشتر باهاشون کار می‌کنیم.