Bỏ qua để đến nội dung

Bước tiếp theo sau khi học Rust

Nếu bạn đã đi qua các chủ đề trong khóa học này, bạn đã biết đủ Rust để viết chương trình thật: biến, luồng điều khiển, hàm, quyền sở hữu (ownership), mượn (borrowing), collection, module, xử lý lỗi, trait, generic, và cả luồng (thread), con trỏ thông minh (smart pointer), unsafe lẫn macro. Thật lòng mà nói, đó là phần lớn những gì bạn sẽ dùng hằng ngày. Phần còn lại chủ yếu là luyện tập, và học thêm về từng thư viện khi bạn cần đến.

Cách học nhanh nhất từ đây là chọn một dự án nhỏ và chịu “kẹt” vài lần. Trang này có năm dự án có hướng dẫn để bạn bắt đầu:

Làm xong mấy dự án đó, hãy thử tự làm một cái:

  • Một máy tính đơn giản: luyện match, Result và xử lý lỗi khi người dùng nhập sai.
  • Một chương trình đọc file cấu hình JSON: nạp thiết lập từ file bằng Serde.
  • Một công cụ lấy dữ liệu web hoặc client API nhỏ: tải một URL bằng reqwest trên nền async/await.

Chưa chắc mình muốn viết loại chương trình nào? Các trang “Bạn có thể làm gì với Rust” cho thấy Rust mạnh ở đâu và người ta dùng crate nào: lập trình mạng, cơ sở dữ liệu, ứng dụng desktop có giao diện, game và vi điều khiển.

Muốn luyện những bài nhỏ hơn trước? Hãy làm các Bài tập, hoặc tự kiểm tra với Câu hỏi phỏng vấn.

Hệ sinh thái package của Rust (các crate, phân phối qua crates.io) có thư viện cho hầu hết mọi việc bạn cần. Vài crate mà bạn sẽ gặp liên tục:

Bạn thêm bất kỳ crate nào ở trên vào dự án bằng cargo add <tên crate>, không cần trình quản lý package riêng. Trang Cargo và crate giải thích cách việc đó hoạt động và cách chọn một crate tốt.

Khóa học này đã đi xa hơn phần lớn các hướng dẫn cho người mới: con trỏ thông minh, luồng và channel, async/await, unsafe Rust, gọi code C (FFI), WebAssembly, và cả tự viết macro macro_rules!. Vài chủ đề sâu hơn có trang riêng, chờ khi bạn sẵn sàng:

  • Macro thủ tục (procedural macro): “người anh em” mạnh hơn (và phức tạp hơn) của các macro macro_rules! trong trang Macro; chính chúng đứng sau #[derive(Debug)] và những thứ tương tự
  • no_std / Rust nhúng: viết Rust không có thư viện chuẩn, cho vi điều khiển và các môi trường hạn chế tài nguyên khác

Bạn không cần những thứ này để viết Rust hữu ích. Biết là chúng tồn tại là đủ, và hãy học khi bạn thật sự gặp một bài toán cần đến chúng.

  • The Rust Book (tiếng Anh): đọc lại lần nữa khi phần cơ bản đã “thấm”; rất nhiều chỗ sẽ dễ hiểu hơn ở lần thứ hai
  • Rust by Example (tiếng Anh): thêm nhiều code có chú thích để đọc
  • Rustlings (tiếng Anh): các bài tập nhỏ để bạn sửa, ngay trong terminal
  • This Week in Rust (tiếng Anh): bản tin hằng tuần để xem cộng đồng đang làm gì

Bạn vẫn sẽ gặp những lỗi biên dịch khiến mình bối rối, và điều đó hoàn toàn bình thường. Chuyện này xảy ra cả với những người đã viết Rust nhiều năm, không riêng gì người mới. Kinh nghiệm không làm lỗi biến mất; nó giúp bạn đọc lỗi nhanh hơn. Cứ tiếp tục viết code, tiếp tục đọc những gì trình biên dịch nói với bạn, và mọi thứ sẽ ngày càng dễ hơn.

Chúc bạn may mắn, và cảm ơn bạn đã kiên trì đến tận đây. 🦀

Kiểm tra nhanh

1. Trang này gợi ý crate nào để đọc và ghi JSON?

2. Crate nào được nhắc đến cho lập trình bất đồng bộ (async)?

3. Chủ đề nào dưới đây được trang này liệt kê là CHƯA nói tới?

Điểm: 0 / 3