Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Hatalara Yükseltilen Uyarılar

Özet

  • bare_trait_objects ve ellipsis_inclusive_range_patterns lint’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.