Menu
CoddyTech

String và &str

Thuộc phần Logic và luồng chương trình trong hành trình Rust của Coddy. Bài học 54 trên 66.

Rust có hai kiểu chuỗi chính phục vụ những mục đích khác nhau: String và &str. Hiểu rõ sự khác biệt giữa chúng là điều quan trọng để làm việc hiệu quả với văn bản trong Rust.

String là một chuỗi được sở hữu và cấp phát trên heap mà bạn có thể chỉnh sửa. Khi tạo một String, chương trình sở hữu dữ liệu đó và chịu trách nhiệm quản lý bộ nhớ của nó. Bạn có thể tăng, giảm kích thước và thay đổi nội dung của chuỗi này vì nó có thể thay đổi khi được khai báo với mut.

let mut my_string = String::from("Hello");
my_string.push_str(" World"); // Cách này hoạt động vì String có quyền sở hữu và có thể thay đổi

Ngược lại, &str (đọc là “string slice”) là một góc nhìn bất biến được mượn từ dữ liệu chuỗi. Nó không sở hữu dữ liệu mà nó trỏ đến, mà chỉ là tham chiếu đến một phần nội dung chuỗi nằm ở nơi khác. Các chuỗi ký tự như "Hello" thực chất có kiểu &str.

let my_slice: &str = "Hello World"; // Đây là một lát cắt chuỗi (string slice)

Hãy hình dung String như một cuốn sách thuộc về bạn, bạn có thể viết vào và chỉnh sửa. Còn &str giống như cuốn sách bạn mượn của người khác: bạn có thể đọc nhưng không thể thay đổi nội dung. Sự khác biệt này là nền tảng của hệ thống quyền sở hữu trong Rust và giúp đảm bảo an toàn bộ nhớ.

Tự làm thử

Bài học này không có thử thách code.

quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng chương trình

Tự luyện tập: Trình biên dịch Rust online