Vec

Vec là kiểu dữ liệu chuẩn dạng mảng có thể tự thay đổi kích thước:

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Vec implement Deref<Target = [T]>, nên tất cả các hàm của slice đều có thể được gọi trên một biến kiểu Vec.

Speaker Notes

This slide should take about 10 minutes.
  • Tương tự StringHashMap, Vec là một kiểu dữ liệu sử dụng để lưu trữ nhiều phần tử. Dữ liệu được lưu trữ trên bộ nhớ heap, nên không cần phải biết trước kích thước của dữ liệu tại thời điểm compile. Kích thước của Vec có thể thay đổi tại trong quá trình chạy.
  • Vec<T> cũng là một kiểu dữ liệu generic, nhưng trong đa số trường hợp ta không cần phải chỉ rõ ra T. Hệ thống nội suy kiểu dữ liệu của Rust sẽ tự động xác định T trong lần đầu tiên gọi hàm push.
  • Ta có thể sử dụng macro vec![...] thay vì gọi hàm Vec::new() để khởi tạo một Vec. vec![...] còn có thể được dùng để khởi tạo vector với một số phần tử cho trước.
  • Để truy cập phần tử của một vector ta có thể sử dụng [ ], nhưng nếu phần tử được truy cập cập nằm ngoài phạm vi của vector, chương trình sẽ panic. Trong trường hợp này, ta có thể sử dụng hàm get để trả về một Option. Hàm pop sẽ loại bỏ phần tử cuối cùng của vector.
  • Chúng ta sẽ đi sâu vào chi tiết về slice trong ngày 3. Bây giờ, học viên chỉ cần biết rằng một biến kiểu Vec cũng có thể sử dụng tất cả các hàm của slice.