1. Chào mừng bạn đến với Comprehensive Rust
  2. Hướng Dẫn Khóa Học
    1. Cấu Trúc Khóa Học
    2. Phím Tắt
    3. Bản Dịch
  3. Sử Dụng Cargo
    1. Hệ Sinh Thái Rust
    2. Code Mẫu
    3. Chạy Cargo Trong Máy Của Bạn
  4. Ngày 1: Buổi Sáng
  5. Lời Chào Mừng
  6. Hello, World
    1. Rust là gì?
    2. Lợi ích của việc sử dụng Rust
    3. Sân chơi (Playground)
  7. Kiểu Dữ Liệu Và Giá Trị
    1. Hello, World
    2. Biến
    3. Giá trị
    4. Số Học
    5. Suy Luận Kiểu
    6. Thực Hành: Fibonacci
      1. Đáp Án
  8. Control flow (Điểu khiển luồng) căn bản
    1. Lệnh if
    2. Vòng lặp
      1. for
      2. loop
    3. break và continue
      1. Labels (nhãn)
    4. Blocks và scopes
      1. Scopes và shadowing
    5. Hàm
    6. Macros
    7. Thực hành: Chuỗi Collatz
      1. Đáp Án
  9. Ngày 1: Buổi chiều
  10. Lời Chào Mừng
  11. Bộ (Tuples) và mảng (Arrays)
    1. Mảng (Arrays)
    2. Bộ (Tuples)
    3. Duyệt mảng
    4. Mẫu (Patterns) và giải cấu trúc (Destructuring)
    5. Bài tập: Mảng lồng nhau
      1. Đáp Án
  12. Tham chiếu (References)
    1. Tham chiếu chia sẻ (Shared References)
    2. Tham chiếu độc quyền (Exclusive References)
    3. Slices: &\[T\]
    4. Chuỗi ký tự (Strings)
    5. Bài tập: Hình học
      1. Đáp Án
  13. Kiểu do người dùng định nghĩa
    1. Kiểu cấu trúc có tên (Named Structs)
    2. Kiểu cấu trúc bộ (Tuple Structs)
    3. Kiểu liệt kê (Enums)
    4. Tĩnh (Static)
    5. Hằng (Const)
    6. Biệt danh kiểu (Type Aliases)
    7. Bài tập: Sự kiện thang máy
      1. Đáp Án
  14. Ngày 2: Buổi sáng
  15. Lời Chào Mừng
  16. Khớp mẫu (Pattern Matching)
    1. Khớp giá trị
    2. Destructuring Structs
    3. Destructuring Enums
    4. Luồng điều khiển let
    5. Bài tập: Đánh giá biểu thức (Expression Evaluation)
      1. Đáp Án
  17. Phương thức (Methods) và đặc điểm (Traits)
    1. Phương thức (Methods)
    2. Đặc điểm (Traits)
      1. Implementing Traits
      2. Siêu đặc điểm (Supertraits)
      3. Kiểu liên kết (Associated Types)
    3. Dẫn xuất (Deriving) từ các đặc điểm (Traits)
    4. Bài tập: Bộ ghi log tổng quát (Generic Logger)
      1. Đáp Án
  18. Ngày 2: Buổi chiều
  19. Lời Chào Mừng
  20. Tổng quát (Generics)
    1. Hàm tổng quát (Generic Functions)
    2. Kiểu dữ liệu tổng quát (Generic Data Types)
    3. Đặc điểm tổng quát (Generic Traits)
    4. Gắn với đặc điểm (Trait Bounds)
    5. impl Trait
    6. Bài tập: Hàm tổng quát min
      1. Đáp Án
  21. Các kiểu trong thư viện chuẩn (Standard Library Types)
    1. Thư viện chuẩn
    2. Tài liệu
    3. Option
    4. Result
    5. String
    6. Vec
    7. HashMap
    8. Bài tập: Bộ đếm
      1. Đáp Án
  22. Các đặc điểm trong thư viện chuẩn (Standard Library Traits)
    1. Hỗ trợ so sánh
    2. Nạp chồng toán tử (Operator Overloading)
    3. From và Into
    4. Ép kiểu (Casting)
    5. Read và Write
    6. Default, cú pháp cập nhật kiểu cấu trúc
    7. Bao đóng (Closures)
    8. Bài tập: Mật mã ROT13
      1. Đáp Án
  23. Ngày 3: Buổi sáng
  24. Lời Chào Mừng
  25. Quản lý bộ nhớ
    1. Xem xét về bộ nhớ chương trình
    2. Những cách tiếp cận quản lý bộ nhớ
    3. Quyền sở hữu (Ownership)
    4. Ngữ nghĩa chuyển dịch (Move Semantics)
    5. Clone
    6. Sao chép kiểu
    7. Drop
    8. Bài tập: Kiểu Builder
      1. Đáp Án
  26. Con trỏ thông minh (Smart Pointers)
    1. Box<T>
    2. Rc
    3. Đối tượng đặc điểm (Trait Objects)
    4. Bài tập: Cây nhị phân
      1. Đáp Án
  27. Ngày 3: Buổi chiều
  28. Lời Chào Mừng
  29. Mượn (Borrowing)
    1. Mượn một giá trị
    2. Kiểm tra mượn (Borrow Checking)
    3. Borrow Errors
    4. Tính khả biến nội tại (Interior Mutability)
    5. Bài tập: Thống kê sức khỏe
      1. Đáp Án
  30. Vòng đời (Lifetimes)
    1. Chú thích vòng đời (Lifetime Annotations)
    2. Sự lược bỏ vòng đời (Lifetime Elision)
    3. Vòng đời kiểu cấu trúc (Struct Lifetimes)
    4. Bài tập: Phân tích cú pháp Protobuf (Protobuf Parsing)
      1. Đáp Án
  31. Ngày 4: Buổi sáng
  32. Lời Chào Mừng
  33. Trình lặp (Iterators)
    1. Iterator
    2. IntoIterator
    3. FromIterator
    4. Bài tập: Chuỗi phương thức trình lặp (Iterator Method Chaining)
      1. Đáp Án
  34. Modules
    1. Modules
    2. Thứ bậc hệ thống tập tin
    3. Phạm vi truy cập (Visibility)
    4. use, super, self
    5. Bài tập: Modules cho thư viện giao diện đồ họa (GUI Library)
      1. Đáp Án
  35. Kiểm thử
    1. Modules kiểm thử
    2. Các loại kiểm thử khác
    3. Các lỗi biên dịch và Clippy
    4. Bài tập: Thuật toán Luhn
      1. Đáp Án
  36. Ngày 4: Buổi chiều
  37. Lời Chào Mừng
  38. Xử lý lỗi
    1. Sự sợ hãi (Panics)
    2. Toán tử thử nghiệm (Try Operator)
    3. Chuyển đổi thử nghiệm (Try Conversions)
    4. Đặc điểm Error (Error Trait)
    5. thiserror và anyhow
    6. Bài tập: Viết lại với Result
      1. Đáp Án
  39. Rust "không an toàn" (Unsafe Rust)
    1. Không an toàn (Unsafe)
    2. Giải tham chiếu con trỏ thô (Dereferencing Raw Pointers)
    3. Biến tĩnh khả biến (Mutable Static Variables)
    4. Kiểu Union
    5. Hàm "không an toàn" (Unsafe Functions)
    6. Đặc điểm "không an toàn" (Unsafe Traits)
    7. Bài tập: Lớp bọc FFI (FFI Wrapper)
      1. Đáp Án
  40. Android
  41. Lời Chào Mừng
  42. Cài đặt
  43. Luật xây dựng (Build Rules)
    1. Tệp nhị phân (Binary)
    2. Thư viện (Library)
  44. AIDL
    1. Hướng dẫn: Dịch vụ sinh nhật
      1. Giao diện (Interface)
      2. API dịch vụ (Service API)
      3. Dịch vụ (Service)
      4. Máy chủ (Server)
      5. Triển khai (Deploy)
      6. Máy khách (Client)
      7. Thay đổi API
      8. Cập nhật cài đặt (Updating Implementations)
    2. Các kiểu trong AIDL (AIDL Types)
      1. Kiểu nguyên thủy (Primitive Types)
      2. Kiểu mảng (Array Types)
      3. Gửi đối tượng (Sending Objects)
      4. Parcelables
      5. Gửi tệp
  45. Kiểm thử
    1. GoogleTest
    2. Kỹ thuật tạo đối tượng giả (Mocking)
  46. Ghi log (Logging)
  47. Tính tương thích với các ngôn ngữ khác (Interoperability)
    1. Với ngôn ngữ C
      1. Gọi C với Bindgen
      2. Gọi Rust từ C
    2. Với ngôn ngữ C++
      1. Module cầu nối (The Bridge Module)
      2. Cầu nối Rust (Rust Bridge)
      3. Sinh code C++ (Generated C++)
      4. Cầu nối C++ (C++ Bridge)
      5. Các kiểu chung (Shared Types)
      6. Các kiểu liệt kê chung (Shared Enums)
      7. Xử lý lỗi trong Rust
      8. Xử lý lỗi trong C++
      9. Các kiểu bổ sung
      10. Xây dựng cho Android: C++
      11. Xây dựng cho Android: Genrules
      12. Xây dựng cho Android: Rust
    3. Với ngôn ngữ Java
  48. Bài tập
  49. Chromium
  50. Lời Chào Mừng
  51. Cài đặt
  52. So sánh hệ sinh thái Chromium và Cargo
  53. Chính sách
  54. Luật xây dựng (Build Rules)
    1. Code "không an toàn" (Unsafe Code)
    2. Phụ thuộc vào code Rust từ Chromium C++
    3. Visual Studio Code
    4. Bài tập
  55. Kiểm thử
    1. Thư viện rust_gtest_interop
    2. Luật GN cho các bài kiểm thử Rust
    3. Macro chromium::import!
    4. Bài tập
  56. Khả năng tương thích với C++ (Interoperability with C++)
    1. Kết nối ví dụ (Example Bindings)
    2. Giới hạn của CXX
    3. Xử lý lỗi trong CXX
      1. Xử lý lỗi: Ví dụ QR
      2. Xử lý lỗi: Ví dụ PNG
    4. Sử dụng CXX trong Chromium
    5. Bài tập
  57. Thêm các bộ thư viện của bên thứ ba (Adding Third Party Crates)
    1. Tùy chỉnh Cargo.toml
    2. Tùy chỉnh gnrt_config.toml
    3. Tải về các bộ thư viện (Downloading Crates)
    4. Tạo ra luật xây dựng gn (Generating gn Build Rules)
    5. Xử lý vấn đề
      1. Scripts xây dựng tạo ra code (Build Scripts Which Generate Code)
      2. Scripts xây dựng ra C++ hoặc thực hiện các hành động tùy ý (Build Scripts Which Build C++ or Take Arbitrary Actions)
    6. Phụ thuộc vào một bộ thư viện (Depending on a Crate)
    7. Xem xét và kiểm tra (Reviews and Audits)
    8. Kiểm tra vào mã nguồn Chromium (Checking into Chromium Source Code)
    9. Giữ các bộ thư viện được cập nhật (Keeping Crates Up to Date)
    10. Bài tập
  58. Ghép tất cả lại - Bài tập
  59. Lời giải bài tập
  60. Bare Metal: Morning
  61. Lời Chào Mừng
  62. no_std
    1. A Minimal Example
    2. alloc
  63. Microcontrollers
    1. Raw MMIO
    2. PACs
    3. HAL Crates
    4. Board Support Crates
    5. The Type State Pattern
    6. embedded-hal
    7. probe-rs and cargo-embed
      1. Debugging
    8. Other Projects
  64. Bài tập
    1. Compass
    2. Solutions
  65. Bare Metal: Afternoon
  66. Application Processors
    1. Getting Ready to Rust
    2. Inline Assembly
    3. MMIO
    4. Let's Write a UART Driver
      1. More Traits
    5. A Better UART Driver
      1. Bitflags
      2. Multiple Registers
      3. Driver
      4. Using It
    6. Ghi log (Logging)
      1. Using It
    7. Exceptions
    8. Other Projects
  67. Useful Crates
    1. zerocopy
    2. aarch64-paging
    3. buddy_system_allocator
    4. tinyvec
    5. spin
  68. Android
    1. vmbase
  69. Bài tập
    1. RTC Driver
    2. Solutions
  70. Concurrency: Morning
  71. Lời Chào Mừng
  72. Threads
    1. Plain Threads
    2. Scoped Threads
  73. Channels
    1. Senders and Receivers
    2. Unbounded Channels
    3. Bounded Channels
  74. Send and Sync
    1. Marker Traits
    2. Send
    3. Sync
    4. Examples
  75. Shared State
    1. Arc
    2. Mutex
    3. Example
  76. Bài tập
    1. Dining Philosophers
    2. Multi-threaded Link Checker
    3. Solutions
  77. Concurrency: Afternoon
  78. Lời Chào Mừng
  79. Async Basics
    1. async/await
    2. Futures
    3. Runtimes
      1. Tokio
    4. Tasks
  80. Channels and Control Flow
    1. Async Channels
    2. Join
    3. Select
  81. Pitfalls
    1. Blocking the Executor
    2. Pin
    3. Async Traits
    4. Cancellation
  82. Bài tập
    1. Dining Philosophers
    2. Broadcast Chat Application
    3. Solutions
  83. Final Words
  84. Thanks!
  85. Chú giải thuật ngữ
  86. Other Resources
  87. Credits