Crate
Crate có thể là một binary crate hoặc library crate.
- binary crate có thể được compile thành binary và có thể thực thi được, ví dụ như một command-line hoặc server. Một binary crate bắt buộc phải có một hàm
main() - library crate không cần hàm
main(). Library crate dùng để share các tính năng cho các project khác.
Crate được publish trên https://crates.io.
Init crate
Để tạo một crate mới ta sử dụng cargo:
cargo new crate_name: binary crate.cargo new crate_name --lib: library crate.
Layout của binary crate và library crate
// Binary crate
├── Cargo.toml
└── src
└── main.rs
// Library crate
├── Cargo.toml
└── src
└── lib.rs
Một crate có thể vừa có lib.rs và main.rs.
Binary crate khi cargo build hoặc cargo run sẽ build ra một file binary bỏ trong ./target/debug/<crate_name>.
Khi build cho môi trường production, ta thêm --release lúc này cargo sẽ build thành binary bỏ trong ./target/release/<crate_name>.
debug hay release được gọi là các build target. Build trong release sẽ được apply nhiều optimization hơn, kích thước nhỏ hơn, chạy nhanh hơn nhưng compile lâu hơn.