Current date May 18, 2026
Tự học Rust

Tự học Rust – Bài 15: Mô hình hóa hành vi với Traits

URL copied
Share URL copied
Tự học Rust - Bài 15: Mô hình hóa hành vi với Traits
Tự học Rust – Bài 15: Mô hình hóa hành vi với Traits

1. Định nghĩa một Trait

Chúng ta dùng từ khóa `trait` để nhóm các chữ ký phương thức (method signatures) lại với nhau.

pub trait Summary {
    fn summarize(&self) -> String;
}

2. Triển khai Trait cho một kiểu dữ liệu

Sử dụng cú pháp `impl [Trait Name] for [Type Name]`.

struct Article {
    title: String,
    author: String,
    content: String,
}

impl Summary for Article {
    fn summarize(&self) -> String {
        format!("{} bởi {}", self.title, self.author)
    }
}

3. Cài đặt mặc định (Default Implementation)

Bạn có thể cung cấp nội dung mặc định cho một phương thức trong Trait. Nếu kiểu dữ liệu không tự triển khai lại, nó sẽ dùng bản mặc định này.

pub trait Summary {
    fn summarize(&self) -> String {
        String::from("(Đọc thêm...)")
    }
}

4. Trait làm tham số (Trait Bounds)

Trait cực kỳ hữu ích khi bạn muốn viết một hàm chấp nhận bất kỳ kiểu dữ liệu nào, miễn là nó có triển khai một Trait nhất định.

pub fn notify(item: &impl Summary) {
    println!("Tin mới: {}", item.summarize());
}

Lời kết Bài 15

Trait là nền tảng cho sự trừu tượng hóa và tái sử dụng mã nguồn trong Rust. Nó giúp bạn định nghĩa “những gì một kiểu dữ liệu có thể làm” thay vì “nó là cái gì”. Ở bài tiếp theo, chúng ta sẽ học một chủ đề cực kỳ quan trọng: Xử lý lỗi (Error Handling) với `Result` và `Option`.

Hẹn gặp lại các bạn!

Share URL copied

Leave a comment

Leave a Reply

Your email address will not be published. Required fields are marked *

Active0
AI3
AI & Automation10

Exclusives

Lifestyle

Related Articles

Tự học Rust – Bài 20: Concurrency – Đa luồng an toàn tuyệt đối

Khám phá cách Rust xử lý lập trình đa luồng mà không...

Tự học Rust – Bài 19: Con trỏ thông minh (Smart Pointers)

Vượt xa các tham chiếu thông thường với Smart Pointers: Box, Rc...

Tự học Rust – Bài 18: Lifetimes – Đảm bảo tham chiếu hợp lệ

Lifetimes là gì? Tại sao Rust cần chúng? Tìm hiểu cách trình...

Tự học Rust – Bài 17: Generics – Viết mã nguồn linh hoạt

Sử dụng Generics trong Rust để tạo ra các hàm và cấu...