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 cratelibrary crate

// Binary crate

├── Cargo.toml
└── src
    └── main.rs
// Library crate

├── Cargo.toml
└── src
    └── lib.rs

Một crate có thể vừa có lib.rsmain.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.