Skip to content

Tự học Rust - Bài 9: Tuples & Enums - Cấu trúc dữ liệu linh hoạt

TuanNDA
Updated date:
Edit this post

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!

Previous
Tự học Rust - Bài 10: Ownership & Borrowing - Linh hồn của Rust
Next
Tự học Rust - Bài 8: Mảng (Arrays) & Vectors