Hatalara Yükseltilen Uyarılar
Özet
bare_trait_objectsveellipsis_inclusive_range_patternslint’lerini tetikleyen kod, Rust 2021’de hata verir.
Ayrıntılar
Mevcut iki lint, Rust 2021’de kesin hataya dönüşüyor; ancak eski sürümlerde uyarı olarak kalmaya devam ediyorlar.
bare_trait_objects:
Rust 2021’de trait nesnelerini
göstermek için dyn anahtar kelimesini kullanmak zorunlu hale gelir.
Örneğin aşağıdaki kodda &MyTrait içinde dyn anahtar kelimesi olmadığı için,
Rust 2021’de bu artık yalnızca lint üretmek yerine doğrudan hata verir:
#![allow(unused)]
fn main() {
pub trait BenimTrait {}
pub fn benim_fonksiyonum(_trait_nesnesi: &BenimTrait) { // `&dyn BenimTrait` olmalı
unimplemented!()
}
}
ellipsis_inclusive_range_patterns:
Kullanımdan kaldırılmış ... sözdizimi,
yani bitiş değerinin aralığa dahil olduğu kapsayıcı aralık desenleri için
Rust 2021’de artık kabul edilmez. Bunun yerini, ifadelerle de tutarlı olan
..= almıştır.
Örneğin aşağıdaki kodda desende ... kullanıldığı için, Rust 2021’de bu kullanım
uyarı değil hata üretir:
#![allow(unused)]
fn main() {
pub fn yuze_esit_veya_kucuk_mu(sayi: u8) -> bool {
matches!(sayi, 0...100) // `0..=100` olmalı
}
}
Taşıma
Rust 2015 ya da 2018 kodunuz bare_trait_objects veya
ellipsis_inclusive_range_patterns için hiçbir uyarı üretmiyorsa ve siz de
bu lint’leri #![allow()] ya da benzeri bir mekanizma ile özellikle
izinli hale getirmediyseniz, ayrıca taşıma yapmanız gerekmez.
Desenlerde ... kullanan ya da trait nesnelerinde dyn yazmayan herhangi bir
crate’i otomatik taşımak için cargo fix --edition çalıştırabilirsiniz.