Giao diện
Foundations Part 2 Critical
Ownership & Borrowing — Trái tim của Rust, không học điều này = không hiểu Rust
⚠️ PHẦN QUAN TRỌNG NHẤT
Đây là phần định hình mọi thứ trong Rust. Nếu bạn không hiểu Ownership và Borrowing, code Rust của bạn sẽ liên tục gặp compiler errors mà không biết tại sao.
Hãy dành thời gian đọc kỹ. Vẽ lại diagrams. Thử code. Xem compiler errors.
Tại sao Ownership quan trọng?
Rust giải quyết bài toán khó nhất trong Systems Programming:
┌─────────────────────────────────────────────────────────────────┐
│ THE MEMORY TRILEMMA │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Truyền thống, bạn chỉ được chọn 2 trong 3: │
│ │
│ PERFORMANCE SAFETY SIMPLICITY │
│ ▲ ▲ ▲ │
│ │ │ │ │
│ ┌───────────┴──────────────────┴─────────────────┴──────────┐ │
│ │ │ │
│ │ C/C++: ✅ Performance ❌ Safety ✅ Simplicity │ │
│ │ (buffer overflows, use-after-free) │ │
│ │ │ │
│ │ Java/Go: ❌ Performance ✅ Safety ✅ Simplicity │ │
│ │ (GC pauses, memory overhead) │ │
│ │ │ │
│ │ Rust: ✅ Performance ✅ Safety ❌ Learning Curve│ │
│ │ (Ownership/Borrowing is the price) │ │
│ └───────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘Nội dung Module
1. Ownership - The Law
Ba quy tắc vàng của Ownership:
- Mỗi value có một owner duy nhất
- Owner ra khỏi scope → value bị dropped
- Move semantics: Chuyển ownership = invalidate biến cũ
Phân biệt Copy trait vs Drop trait.
2. Borrowing & References
"Mượn" data mà không lấy ownership:
&T— Immutable reference (nhiều readers)&mut T— Mutable reference (một writer duy nhất)- Dangling references: Compiler ngăn chặn thế nào?
- Slices (
&str,&[T]) — View into memory
3. Data Modeling - Structs & Enums
Định nghĩa custom types:
- Struct variants (named, tuple, unit)
- Enums as Algebraic Data Types —
Option<T>,Result<T, E> matchexhaustivenessif letsyntax sugar
Roadmap học tập
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ OWNERSHIP │────▶│ BORROWING │────▶│ DATA MODELING │
│ │ │ │ │ │
│ • 3 Rules │ │ • &T vs &mut T │ │ • Structs │
│ • Move/Copy │ │ • Slices │ │ • Enums (ADT) │
│ • Drop │ │ • Lifetimes │ │ • Option/Result │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────────────────────────────────────────────┐
│ COMPILE-TIME MEMORY SAFETY │
│ Không cần Garbage Collector, không runtime cost │
└─────────────────────────────────────────────────────────┘Phương pháp học
💡 TEACHING BY FAILING
Trong Part 2, mỗi concept sẽ được giới thiệu qua:
- Code SAI → xem compiler error
- Phân tích error → hiểu tại sao sai
- Code ĐÚNG → hiểu cách Rust muốn bạn làm
Đây là cách hiệu quả nhất để học Ownership/Borrowing.