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"),
}