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.