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.
Làm một thứ gì đó nho nhỏ
Phần tiêu đề “Làm một thứ gì đó nho nhỏ”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:
- Trò chơi đoán số: dự án Rust đầu tay kinh điển, gồm nhập liệu, vòng lặp và
match. - Đếm từ: đọc một file văn bản và dùng
HashMapđể đếm từ. - Ứng dụng To-Do dòng lệnh: luyện
Vec,struct,enumvà lưu dữ liệu ra file. - Công cụ dòng lệnh với clap: một công cụ dòng lệnh thật, có lệnh con và
--help. - Web API với Axum: một server JSON API xây dựng trên async/await.
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,Resultvà 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
reqwesttrê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.
Các crate nên biết
Phần tiêu đề “Các crate nên biết”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:
serde(tiếng Anh): đọc và ghi JSON (và các định dạng khác); xem JSON với Serdeclap(tiếng Anh): xây dựng bộ phân tích tham số dòng lệnh; xem dự án clapanyhow/thiserror(tiếng Anh): xử lý lỗi trong ứng dụng và thư viện; xem anyhow & thiserrorrand,regexvàchrono(tiếng Anh): số ngẫu nhiên, biểu thức chính quy và ngày giờ; xem Số ngẫu nhiên, Regex và Ngày và giờlog/tracing(tiếng Anh): ghi log; xem Ghi logreqwest(tiếng Anh): gửi request HTTPtokio(tiếng Anh): lập trình bất đồng bộ (async); xem Async/Await
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.
Những chủ đề chúng ta chưa nói tới
Phần tiêu đề “Những chủ đề chúng ta chưa nói tới”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.
Học tiếp ở đâu
Phần tiêu đề “Học tiếp ở đâu”- 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ì
Một lời thật lòng cuối cùng
Phần tiêu đề “Một lời thật lòng cuối cùng”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
Phần tiêu đề “Kiểm tra nhanh”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