Rust Structs and Enums

Defining custom data types with structs and enums

Struct Definition

struct User { # define struct
    username: String,
    email: String,
    age: u32,
    active: bool,
}

Creating Structs

let user1 = User { # create instance
    email: String::from("[email protected]"),
    username: String::from("user123"),
    active: true,
    age: 25,
};

Tuple Structs

struct Color(i32, i32, i32); # tuple struct
let black = Color(0, 0, 0); # create instance
println!("{}"{}, black.0); # access by index

Enum Definition

enum Message { # define enum
    Quit, # no data
    Move { x: i32, y: i32 }, # struct-like
    Write(String), # tuple-like
    ChangeColor(i32, i32, i32),
}

Using Enums

let msg = Message::Write(String::from("hello")); # create variant
match msg { # pattern match
    Message::Quit => println!("Quit"),
    Message::Write(text) => println!("{}"{}, text),
    _ => (), # catch all
}

Option Enum

let some_number = Some(5); # Option with value
let absent: Option<i32> = None; # Option without value
match some_number {
    Some(x) => println!("{}"{}, x),
    None => println!("Nothing"),
}