Cargo là phần mềm quản lý thư viện của Rust, nếu bạn đã từng làm việc với các ngôn ngữ hoặc công nghệ như Python, Ruby, Node.js… thì Cargo cũng tương tự như Bundler, npm, pub, pip… trong các ngôn ngữ hay công nghệ trên. Khi chúng ta cài đặt Rust thì trình cài đặt của Rust cũng đã cài đặt sẵn luôn phần mềm Cargo cho chúng ta.
Cargo có các chức năng sau:
- Tạo và quản lý project
- Biên dịch project
- Chạy project
- Chạy unit test
- Cài đặt các thư viện cần thiết
Tài liệu hướng dẫn sử dụng Cargo nằm tại địa chỉ: http://doc.crates.io/guide.html
Ví dụ
Chúng ta sẽ tìm hiểu một số lệnh thường dùng trong Cargo.
Tạo project Rust
Để tạo project Rust bằng Cargo thì chúng ta chạy lệnh cargo new <tên project> --bin
, ví dụ:
Tham số --bin
cho Cargo biết chúng ta muốn tạo một project có thể chạy được, tức là có thể biên dịch thành file .exe trên Windows, nếu không đưa tham số này vào thì Cargo sẽ tạo một project thư viện, tức là code viết ra sẽ biên dịch thành các file thư viện.
Trong ví dụ trên chúng ta tạo project với tên hello, Cargo sẽ tạo một thư mục có tên hello và tạo các file và thư mục cần thiết trong đó, trong số đó có một thư mục tên là src chứa một file Rust có tên main.rs
có nội dung như sau:
fn main() {
println!("Hello, world!");
}
Đây chỉ là đoạn code in chuỗi “Hello, world!” tương tự như trong bài trước chúng ta đã làm.
Bên ngoài thư mục gốc của project có một file tên Cargo.toml, đây là file chứa code cấu hình project được viết dưới định dạng TOML (xem thêm tại https://github.com/toml-lang/toml) có nội dung như sau:
[package] name = "hello" version = "0.1.0" authors = ["tên <địa chỉ email>"] [dependencies]
Chúng ta sẽ tìm hiểu về file này sau.
Biên dịch project
Để biên dịch project thì chúng ta chạy lệnh cargo build
:
Cargo sẽ biên dịch thành file hello.exe và đặt trong một thư mục mới có tên target/debug.
Chạy project
Để chạy project thì chúng ta chỉ cần chạy lệnh cargo run,
cargo sẽ chạy file hello.exe trên và in một số câu thông báo, chẳng hạn như thời gian chạy…
Ngoài ra khi biên dịch thì Cargo cũng sẽ tạo một file có tên Cargo-lock nằm ở thư mục gốc của project, mục đích của file này là để theo dõi các thư viện được dùng trong project, hiện tại file này có nội dung như sau:
[root] name = "hello" version = "0.1.0"
Lý do là bởi vì các thư viện luôn luôn được phát triển và được cập nhật phiên bản mới, project sẽ luôn chỉ dùng phiên bản được chỉ định trong file Cargo-lock này nhằm đảm bảo quá trình biên dịch đươc ổn định.