Bắt đầu với Rust
Hãy cùng cài Rust lên máy của bạn và viết chương trình đầu tiên. Nếu bạn chưa muốn cài gì, bạn có thể làm theo trong Rust Playground rồi quay lại trang này sau.
Bước 1: Cài Rust bằng rustup
Phần tiêu đề “Bước 1: Cài Rust bằng rustup”Cách cài Rust chính thức là dùng một công cụ tên rustup. Nó cài trình biên dịch Rust, công cụ build cargo, và giữ cho mọi thứ luôn được cập nhật.
Vào rustup.rs (tiếng Anh) và làm theo hướng dẫn cho hệ điều hành của bạn:
-
Windows — tải về và chạy
rustup-init.exe, rồi chấp nhận các tùy chọn mặc định. -
macOS / Linux — dán lệnh này vào terminal:
Terminal window curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Bước 2: Kiểm tra xem đã cài được chưa
Phần tiêu đề “Bước 2: Kiểm tra xem đã cài được chưa”Đóng terminal rồi mở lại, sau đó chạy:
rustc --versioncargo --versionBạn sẽ thấy số phiên bản kiểu rustc 1.xx.0. Nếu thấy rồi thì bạn đã sẵn sàng.
rustclà trình biên dịch Rust (nó biến code của bạn thành một chương trình).cargolà công cụ tất-cả-trong-một của Rust để build, chạy, test và quản lý dự án. Bạn sẽ dùngcargocho gần như mọi việc.
Bước 3: Tạo dự án đầu tiên
Phần tiêu đề “Bước 3: Tạo dự án đầu tiên”Thay vì tự tạo file bằng tay, hãy để cargo dựng dự án cho bạn:
cargo new hello_rustcd hello_rustLệnh này tạo một thư mục tên hello_rust với mọi thứ một dự án Rust cần:
hello_rust/├── Cargo.toml # cấu hình dự án và các thư viện phụ thuộc└── src/ └── main.rs # code của bạn nằm ở đâyCargo.tomlmô tả dự án của bạn (tên, phiên bản và các thư viện nó dùng).src/main.rslà file khởi đầu —cargocòn điền sẵn một chương trình Hello World cho bạn.
Bước 4: Chạy thử
Phần tiêu đề “Bước 4: Chạy thử”Từ bên trong thư mục dự án, chạy:
cargo runBạn sẽ thấy cargo biên dịch dự án rồi in ra:
Hello, world!Vậy là xong — bạn vừa build và chạy một chương trình Rust.
Hiểu đoạn code
Phần tiêu đề “Hiểu đoạn code”Mở src/main.rs và bạn sẽ thấy:
fn main() { println!("Hello, world!");}fn main() { ... }định nghĩa hàm main — mọi chương trình Rust đều bắt đầu chạy từ đây.println!("...")in một dòng chữ ra màn hình.
Thử đổi thông điệp và chạy lại cargo run:
fn main() { println!("Xin chào từ chương trình Rust đầu tiên của mình!");}Kết quả:
Xin chào từ chương trình Rust đầu tiên của mình!cargo run và cargo build
Phần tiêu đề “cargo run và cargo build”Hai lệnh bạn sẽ dùng liên tục:
| Lệnh | Tác dụng |
|---|---|
cargo run |
Biên dịch và chạy chương trình (tiện nhất khi đang phát triển) |
cargo build |
Chỉ biên dịch — chương trình nằm trong target/debug/ |
cargo build --release |
Biên dịch một phiên bản được tối ưu, chạy nhanh hơn, để phát hành |
Khi có lỗi: đọc thông báo lỗi của trình biên dịch
Phần tiêu đề “Khi có lỗi: đọc thông báo lỗi của trình biên dịch”Bạn sẽ gặp lỗi biên dịch, mỗi ngày, kể cả sau nhiều năm viết Rust. Đó không phải dấu hiệu bạn kém. Đó là trình biên dịch đang làm đúng việc của nó. Hãy cố tình tạo ra một lỗi để lần đầu gặp đỡ sợ hơn.
Xóa dấu ! khỏi println! trong src/main.rs:
fn main() { println("Hello, world!");}Chạy cargo run và bạn sẽ nhận được:
error[E0423]: expected function, found macro `println` --> src/main.rs:2:5 |2 | println("Hello, world!"); | ^^^^^^^ not a function |help: use `!` to invoke the macro |2 | println!("Hello, world!"); | +Thông báo lỗi luôn bằng tiếng Anh. Hãy đọc nó từ trên xuống dưới:
- Dòng đầu tiên cho biết sai ở đâu: Rust chờ một hàm (“expected function”), nhưng
printlnlại là một macro (bạn sẽ học macro là gì ở trang tiếp theo). --> src/main.rs:2:5cho biết vị trí: filesrc/main.rs, dòng 2, cột 5.- Các dấu
^^^^^^^chỉ đúng vào đoạn code có vấn đề. - Phần
help:thường chỉ ra cách sửa. Ở đây nó còn đánh dấu chỗ thiếu!bằng một dấu+.
Thêm lại dấu ! và mọi thứ lại chạy bình thường:
fn main() { println!("Hello, world!");}Kết quả:
Hello, world!Bước 5: Thiết lập editor (nên làm)
Phần tiêu đề “Bước 5: Thiết lập editor (nên làm)”Để có trải nghiệm tốt nhất, hãy cài extension rust-analyzer cho editor của bạn. Nó cho bạn gợi ý code tự động, báo lỗi ngay trong editor và hiển thị kiểu dữ liệu khi bạn gõ.
- VS Code — cài extension rust-analyzer (tiếng Anh)
- Phần lớn các editor khác (JetBrains, Neovim, v.v.) cũng hỗ trợ rust-analyzer.
Luyện tập
Phần tiêu đề “Luyện tập”1. Ba dòng
Phần tiêu đề “1. Ba dòng”Viết chương trình in ra ba dòng: tên bạn, món ăn bạn thích nhất, và Mình vừa chạy Rust!. Gợi ý: mỗi println! in một dòng, nên hãy dùng ba lệnh.
Xem lời giải
fn main() { println!("Mình tên là Lan"); println!("Mình thích phở"); println!("Mình vừa chạy Rust!");}Kết quả:
Mình tên là LanMình thích phởMình vừa chạy Rust!2. Một banner nho nhỏ
Phần tiêu đề “2. Một banner nho nhỏ”In một banner nhỏ giống như bên dưới, với một hàng dấu = ở trên và dưới tiêu đề. Sau đó cố tình làm hỏng nó bằng cách xóa một dấu !, chạy cargo run, đọc thông báo lỗi rồi sửa lại. Gợi ý: các hàng = chỉ là chữ bên trong println!, như mọi thông điệp khác.
Xem lời giải
fn main() { println!("=============="); println!(" CHÀO RUST"); println!("==============");}Kết quả:
============== CHÀO RUST==============Tóm tắt
Phần tiêu đề “Tóm tắt”- Cài Rust bằng
rustuptừ rustup.rs (tiếng Anh). - Kiểm tra bằng
rustc --versionvàcargo --version. - Tạo dự án bằng
cargo new, chạy nó bằngcargo run. - Một dự án có
Cargo.toml(cấu hình) vàsrc/main.rs(code của bạn). - Đọc thông báo lỗi từ trên xuống: sai gì, ở đâu, và thường có một phần
help:chỉ cách sửa. - Cài rust-analyzer cho editor để mọi thứ suôn sẻ hơn nhiều.
Kiểm tra nhanh
Phần tiêu đề “Kiểm tra nhanh”Kiểm tra nhanh
1. Công cụ nào cài trình biên dịch Rust, cargo, và giữ chúng luôn được cập nhật?
2. File nào mô tả tên, phiên bản và các thư viện phụ thuộc của một dự án Rust?
3. Lệnh nào chỉ biên dịch chương trình mà không chạy nó?
Điểm: 0 / 3
Đọc thêm
Phần tiêu đề “Đọc thêm”- Installation — The Rust Book (tiếng Anh): cài đặt trên mọi nền tảng, cập nhật bằng
rustup updatevà cách xử lý sự cố. - Hello, Cargo! — The Rust Book (tiếng Anh): xem kỹ hơn
cargo new,cargo build,cargo runvàcargo check. - First Steps with Cargo — The Cargo Book (tiếng Anh):
cargo newtạo ra những gì và từng dòng trongCargo.tomlcó ý nghĩa gì. - The rustup book (tiếng Anh): cài thêm toolchain, cập nhật Rust, và chuyển qua lại giữa stable và nightly.
- rust-analyzer (tiếng Anh): hướng dẫn thiết lập cho VS Code, Neovim, Emacs và các editor khác.