Workspace
- Rust kursu
- Orta seviye
- Ders 81/115
- 4 dk
Workspace ile birden fazla crate'i tek çatı altında yönetirsin.
Workspace
Workspace, birlikte geliştirilen birden çok paketi tek çatı altında toplar. Tüm üyeler tek bir Cargo.lock ve target/ klasörünü paylaşır; ortak bağımlılıklar bir kez derlenir:
# kök Cargo.toml
[workspace]
members = ["ortak", "api", "cli"]
[workspace.dependencies]
serde = "1"
# api/Cargo.toml
[dependencies]
ortak = { path = "../ortak" }
serde = { workspace = true }cargo build tüm üyeleri, cargo test -p api yalnızca birini işler.
Ortak kod düzeni
Tipik bir düzen: modeller ve yardımcılar ortak kütüphanesinde, sunucu ve komut satırı ayrı binary paketlerde. Her paket yalnızca ihtiyaç duyduğu bağımlılıkları çeker:
proje/
├── Cargo.toml # [workspace]
├── ortak/src/lib.rs # pub fn surum()
├── api/src/main.rs # use ortak::surum;
└── cli/src/main.rs # use ortak::surum;Uygulama Paylaşılan sürüm
Workspace'i modüllerle taklit et: mod ortak içinde "1.0.0" döndüren pub fn surum(), mod api ve mod cli içinde super::ortak::surum() kullanan pub fn durum() -> String. api 1.0.0 | cli 1.0.0 çıktısını üret.
Başlangıç kodu
fn main() {
// buraya yaz
}Örnek çözüm
mod ortak {
pub fn surum() -> &'static str {
"1.0.0"
}
}
mod api {
pub fn durum() -> String {
format!("api {}", super::ortak::surum())
}
}
mod cli {
pub fn durum() -> String {
format!("cli {}", super::ortak::surum())
}
}
fn main() {
println!("{} | {}", api::durum(), cli::durum());
}Beklenen çıktı
api 1.0.0 | cli 1.0.0
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bir workspace üyesi diğerine nasıl bağımlı olur?
- path = "../ortak" ile yerel yol bağımlılığı Doğru cevap
- crates.io'dan indirerek
- mod ortak; yazarak
- Otomatik bağlanır
Açıklama: Yol bağımlılığı, değişikliklerin yayımlamadan hemen görülmesini sağlar.
2 Üyeleri listele
[workspace]
____ = ["ortak", "api", "cli"]
[workspace]
members = ["ortak", "api", "cli"]
Açıklama: Workspace üyeleri members listesinde tanımlanır.
3 Öğe ve görevi
| Kavram | Anlamı |
|---|---|
[workspace] |
Çatı tanımı |
path = "../ortak" |
Yerel bağımlılık |
workspace = true |
Ortak sürümü kullan |
cargo test -p api |
Tek üye |