CodeBlanks Logo Icon CodeBlanks

Sürümler

Semver sürüm belirtimini ve cargo update komutunu öğrenirsin.

Sürümler

Crate'ler anlamsal sürümleme (semver) kullanır: MAJOR.MINOR.PATCH. Uyumsuz değişiklik MAJOR'u, geriye uyumlu yeni özellik MINOR'u, hata düzeltme PATCH'i artırır. Cargo.toml'daki "1.2.3" aslında ^1.2.3 demektir:

"1.2.3"  = ^1.2.3   →  >=1.2.3, <2.0.0
"0.8"    = ^0.8     →  >=0.8.0, <0.9.0   (0.x'te MINOR uyumsuzdur)
"~1.2"   →  >=1.2.0, <1.3.0
"=1.2.3" →  yalnızca 1.2.3

Tuple karşılaştırması

Rust'ta tuple'lar sözlük sırasıyla karşılaştırılır: önce ilk elemanlar, eşitse ikinciler... Bu, sürüm karşılaştırmasını kolaylaştırır:

println!("{}", (1, 4, 0) > (1, 2, 3));   // true
println!("{}", (2, 0, 0) > (1, 9, 9));   // true

// ^gerekli kuralı (MAJOR > 0 için)
fn uyumlu(gerekli: (u32, u32, u32), mevcut: (u32, u32, u32)) -> bool {
    mevcut.0 == gerekli.0 && mevcut >= gerekli
}

Uygulama Uyumluluk denetimi

Yukarıdaki uyumlu fonksiyonunu yaz. (1, 2, 3) gereksinimine karşı (1, 4, 0), (2, 0, 0) ve (1, 2, 1) sürümlerinin sonuçlarını boşlukla yazdır.

Başlangıç kodu

main.rs
fn main() {
    // buraya yaz
}

Örnek çözüm

main.rs
fn uyumlu(gerekli: (u32, u32, u32), mevcut: (u32, u32, u32)) -> bool {
    mevcut.0 == gerekli.0 && mevcut >= gerekli
}

fn main() {
    let g = (1, 2, 3);
    println!("{} {} {}", uyumlu(g, (1, 4, 0)), uyumlu(g, (2, 0, 0)), uyumlu(g, (1, 2, 1)));
}

Beklenen çıktı

true false false

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 <code>rand = "0.8"</code> bağımlılığı 0.9.0 sürümünü otomatik alır mı?

  • Yalnızca cargo update ile
  • Yalnızca release'te
  • Hayır; 0.x sürümlerinde MINOR artışı uyumsuz sayılır Doğru cevap
  • Evet

Açıklama: 1.0 öncesi sürümlerde API kararsız kabul edilir; bu yüzden caret kuralı ilk sıfır olmayan bileşene göre çalışır.

2 Tam sürüm

Soru
serde = "____1.0.193"   # yalnızca bu sürüm
Cevap
serde = "=1.0.193"   # yalnızca bu sürüm

Açıklama: = ön eki tek bir sürüme kilitler.

3 Gereksinim ve izin verilen aralık

Kavram Anlamı
"1.2.3" >=1.2.3, <2.0.0
"0.8" >=0.8.0, <0.9.0
"~1.2" >=1.2.0, <1.3.0
"=1.2.3" Yalnızca 1.2.3

Orta seviye bölümündeki tüm dersler