Table of contents
Open Table of contents
1. Tuples (Bộ giá trị)
Tuple là một cách để gom nhóm các giá trị có kiểu dữ liệu khác nhau vào trong một biến duy nhất.
Tạo một Tuple:
let person = ("John", 30, true);
Truy cập giá trị:
Bạn truy cập các phần tử bằng dấu chấm . kèm theo chỉ số (bắt đầu từ 0).
println!("Tên: {}", person.0);
println!("Tuổi: {}", person.1);
Giải nén (Unpacking):
Bạn có thể tách Tuple thành các biến riêng biệt:
let (name, age, is_active) = person;
println!("Chào {}, bạn {} tuổi.", name, age);
2. Enums (Kiểu liệt kê)
Enum (Enumeration) cho phép bạn định nghĩa một kiểu dữ liệu có thể là một trong số các giá trị đã liệt kê. Mỗi giá trị này được gọi là một Variant.
Tạo và sử dụng Enum:
enum Direction {
Up,
Down,
Left,
Right,
}
let player_move = Direction::Left;
Enum kết hợp với Match:
Đây là bộ đôi “trời sinh” trong Rust. match giúp bạn xử lý logic cho từng trường hợp của Enum một cách an toàn.
match player_move {
Direction::Up => println!("Đi lên"),
Direction::Down => println!("Đi xuống"),
_ => println!("Rẽ hướng khác"),
}
3. Enum chứa dữ liệu (Bí quyết sức mạnh của Rust)
Khác với nhiều ngôn ngữ khác, Enum trong Rust có thể mang theo dữ liệu bên trong từng variant.
enum LoginStatus {
Success(String), // Mang theo tên người dùng
Error(String), // Mang theo thông báo lỗi
}
let result = LoginStatus::Success(String::from("TuanNDA"));
match result {
LoginStatus::Success(user) => println!("Chào mừng {}!", user),
LoginStatus::Error(msg) => println!("Lỗi: {}", msg),
}
Lời kết Bài 9
Tuples và Enums giúp mã nguồn của bạn trở nên rõ ràng và “tự thân tài liệu hóa” (self-documenting). Ở bài tiếp theo, hãy chuẩn bị tinh thần để chinh phục khái niệm quan trọng nhất, cũng là “đặc sản” của Rust: Ownership (Quyền sở hữu).
Hẹn gặp lại các bạn!