Sürümler
- Rust kursu
- Orta seviye
- Ders 79/115
- 4 dk
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.3Tuple 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
fn main() {
// buraya yaz
}Örnek çözüm
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
serde = "____1.0.193" # yalnızca bu sürüm
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 |