- Ngôn ngữ lập trình Rust
- Lời nói đầu
- Giới thiệu
- 1. Bắt đầu
❱
- 1.1. Cài đặt
- 1.2. Xin chào, Thế giới!
- 1.3. Xin chào, Cargo!
- 2. Lập trình trò chơi đoán số
- 3. Các khái niệm lập trình chung
❱
- 3.1. Biến và Tính khả biến
- 3.2. Kiểu dữ liệu
- 3.3. Hàm
- 3.4. Bình luận
- 3.5. Luồng điều khiển
- 4. Hiểu về Quyền sở hữu
❱
- 4.1. Quyền sở hữu là gì?
- 4.2. Tham chiếu và Mượn
- 4.3. Kiểu Slice
- 5. Sử dụng Structs để cấu trúc dữ liệu liên quan
❱
- 5.1. Định nghĩa và Khởi tạo Structs
- 5.2. Một chương trình mẫu sử dụng Structs
- 5.3. Cú pháp phương thức
- 6. Enums và Khớp mẫu
❱
- 6.1. Định nghĩa Enum
- 6.2. Cấu trúc luồng điều khiển match
- 6.3. Luồng điều khiển ngắn gọn với if let và let else
- 7. Quản lý dự án đang phát triển với Packages, Crates và Modules
❱
- 7.1. Packages và Crates
- 7.2. Định nghĩa Modules để kiểm soát phạm vi và quyền truy cập
- 7.3. Đường dẫn để tham chiếu đến các phần tử trong cây Module
- 7.4. Đưa các đường dẫn vào phạm vi với từ khóa use
- 7.5. Tách các Module thành các tệp khác nhau
- 8. Các Collection thông dụng
❱
- 8.1. Lưu trữ danh sách giá trị với Vectors
- 8.2. Lưu trữ văn bản mã hóa UTF-8 với Strings
- 8.3. Lưu trữ khóa với giá trị liên kết trong Hash Maps
- 9. Xử lý lỗi
❱
- 9.1. Các lỗi không thể khôi phục với panic!
- 9.2. Các lỗi có thể khôi phục với Result
- 9.3. Nên hay không nên dùng panic!
- 10. Kiểu Generic, Traits và Lifetimes
❱
- 10.1. Kiểu dữ liệu Generic
- 10.2. Traits: Định nghĩa hành vi dùng chung
- 10.3. Xác thực tham chiếu với Lifetimes
- 11. Viết kiểm thử tự động
❱
- 11.1. Cách viết kiểm thử
- 11.2. Kiểm soát cách chạy kiểm thử
- 11.3. Tổ chức kiểm thử
- 12. Dự án I/O: Xây dựng chương trình dòng lệnh
❱
- 12.1. Chấp nhận đối số từ dòng lệnh
- 12.2. Đọc tệp
- 12.3. Tái cấu trúc để tăng tính module hóa và xử lý lỗi
- 12.4. Phát triển chức năng thư viện với Phát triển theo hướng kiểm thử
- 12.5. Làm việc với biến môi trường
- 12.6. Ghi thông báo lỗi vào Standard Error thay vì Standard Output
- 13. Các đặc điểm của ngôn ngữ hàm: Iterators và Closures
❱
- 13.1. Closures: Hàm ẩn danh có khả năng bắt giữ môi trường
- 13.2. Xử lý một chuỗi các phần tử với Iterators
- 13.3. Cải thiện dự án I/O của chúng ta
- 13.4. So sánh hiệu suất: Vòng lặp và Iterators
- 14. Tìm hiểu thêm về Cargo và Crates.io
❱
- 14.1. Tùy chỉnh bản dựng với Release Profiles
- 14.2. Xuất bản một Crate lên Crates.io
- 14.3. Cargo Workspaces
- 14.4. Cài đặt các tệp nhị phân từ Crates.io với cargo install
- 14.5. Mở rộng Cargo với các lệnh tùy chỉnh
- 15. Con trỏ thông minh
❱
- 15.1. Sử dụng Box<T> để trỏ đến dữ liệu trên Heap
- 15.2. Coi con trỏ thông minh như tham chiếu thông thường với Deref
- 15.3. Chạy mã khi dọn dẹp với Trait Drop
- 15.4. Rc<T>, con trỏ thông minh đếm tham chiếu
- 15.5. RefCell<T> và mẫu tính khả biến nội tại
- 15.6. Các vòng tham chiếu có thể gây rò rỉ bộ nhớ
- 16. Concurrency không sợ hãi
❱
- 16.1. Sử dụng Threads để chạy mã đồng thời
- 16.2. Sử dụng Message Passing để truyền dữ liệu giữa các Threads
- 16.3. Concurrency với trạng thái được chia sẻ
- 16.4. Concurrency có thể mở rộng với các Trait Send và Sync
- 17. Cơ bản về lập trình bất đồng bộ: Async, Await, Futures và Streams
❱
- 17.1. Futures và cú pháp Async
- 17.2. Áp dụng Concurrency với Async
- 17.3. Làm việc với bất kỳ số lượng Futures nào
- 17.4. Streams: Futures theo chuỗi
- 17.5. Xem xét kỹ hơn về các Trait cho Async
- 17.6. Futures, Tasks và Threads
- 18. Các đặc điểm của lập trình hướng đối tượng trong Rust
❱
- 18.1. Các tính chất của ngôn ngữ hướng đối tượng
- 18.2. Sử dụng Trait Objects cho phép chứa các giá trị của các kiểu khác nhau
- 18.3. Triển khai một mẫu thiết kế hướng đối tượng
- 19. Mẫu và Khớp mẫu
❱
- 19.1. Tất cả các nơi mà mẫu có thể được sử dụng
- 19.2. Tính bác bỏ: Liệu một mẫu có thể không khớp
- 19.3. Cú pháp mẫu
- 20. Tính năng nâng cao
❱
- 20.1. Rust không an toàn
- 20.2. Traits nâng cao
- 20.3. Kiểu nâng cao
- 20.4. Hàm và Closures nâng cao
- 20.5. Macros
- 21. Dự án cuối cùng: Xây dựng một Web Server đa luồng
❱
- 21.1. Xây dựng một Web Server đơn luồng
- 21.2. Chuyển Server đơn luồng thành Server đa luồng
- 21.3. Tắt và dọn dẹp một cách an toàn
- 22. Phụ lục
❱
- 22.1. A - Các từ khóa
- 22.2. B - Các toán tử và ký hiệu
- 22.3. C - Các Trait có thể dẫn xuất
- 22.4. D - Các công cụ phát triển hữu ích
- 22.5. E - Các phiên bản
- 22.6. F - Các bản dịch của cuốn sách
- 22.7. G - Cách Rust được tạo ra và "Nightly Rust"