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

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.

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:

Terminal window
rustc --version
cargo --version

Bạ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.

  • rustc là trình biên dịch Rust (nó biến code của bạn thành một chương trình).
  • cargo là 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ùng cargo cho gần như mọi việc.

Thay vì tự tạo file bằng tay, hãy để cargo dựng dự án cho bạn:

Terminal window
cargo new hello_rust
cd hello_rust

Lệ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 ở đây
  • Cargo.toml mô tả dự án của bạn (tên, phiên bản và các thư viện nó dùng).
  • src/main.rs là file khởi đầu — cargo còn điền sẵn một chương trình Hello World cho bạn.

Từ bên trong thư mục dự án, chạy:

Terminal window
cargo run

Bạ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.

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!
▶ Tự chạy thử

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:

  1. Dòng đầu tiên cho biết sai ở đâu: Rust chờ một hàm (“expected function”), nhưng println lại là một macro (bạn sẽ học macro là gì ở trang tiếp theo).
  2. --> src/main.rs:2:5 cho biết vị trí: file src/main.rs, dòng 2, cột 5.
  3. Các dấu ^^^^^^^ chỉ đúng vào đoạn code có vấn đề.
  4. 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!
▶ Tự chạy thử

Để 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.

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à Lan
Mình thích phở
Mình vừa chạy Rust!
▶ Tự chạy thử

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ự chạy thử
  • Cài Rust bằng rustup từ rustup.rs (tiếng Anh).
  • Kiểm tra bằng rustc --version và cargo --version.
  • Tạo dự án bằng cargo new, chạy nó bằng cargo 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

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