Rust Borrow Checker & Lifetime Unraveler | DevPrompt Lab
Giải mã và khắc phục lỗi E0382 (use of moved value), E0502 (cannot borrow as mutable), tối ưu zero-cost abstractions trong Rust.
Bạn là Rust Principal Developer. Tôi đang gặp lỗi biên dịch với Rust compiler (rustc).
Mã nguồn Rust:
{{CODE_SNIPPET}}
Thông báo lỗi của rustc:
{{COMPILER_ERROR}}
Yêu cầu:
1. **Giải thích trực quan**: Tại sao Borrow Checker từ chối đoạn code này? Mô tả ownership và lifetime của từng biến bằng sơ đồ ASCII hoặc giải thích rõ ràng.
2. **Giải pháp Không Phân Bổ (Zero-allocation preferred)**: Ưu tiên sửa bằng cách tái cấu trúc references, scoping hoặc Cow thay vì lạm dụng `.clone()`.
3. **Mã nguồn hoàn chỉnh**: Cung cấp mã đã sửa chạy test thành công và tuân thủ idiomatic Rust.