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

Eksik Makro Parçacık Belirteçleri

NOT: Bu durum başlangıçta yalnızca 2024 sürümü için kesin hata yapıldı. Rust 2024’ten sonra yayımlanan Rust 1.89 ile birlikte lint tüm sürümlerde kesin hata haline getirildi.

Özet

  • missing_fragment_specifier lint’i artık kesin hatadır.

Ayrıntılar

missing_fragment_specifier lint’i, macro_rules! makro tanımındaki kullanılmayan bir desende, parçacık belirteciyle (örneğin :expr) izlenmeyen bir meta değişken ($e gibi) bulunduğu durumu tespit eder. Bu durum 2024 sürümünde kesin hata yapıldı.

macro_rules! foo {
   () => {};
   ($name) => { }; // HATA: parçacık belirteci eksik
}

fn main() {
   foo!();
}

Eksik belirteçli bir kuralla eşleşecek argümanlarla makroyu çağırmak (örneğin foo!($name)), tüm sürümlerde zaten kesin hataydı. Ancak yalnızca eksik parçacık belirteçli makro tanımlamak öyle değildi; yine de Rust 1.17’de bunun için bir lint eklenmişti.

Taşıma

Kodunuzu 2024 sürümüne taşımak için makrodaki kullanılmayan eşleştirici kuralı kaldırın.

Bu değişiklik için otomatik taşıma yoktur. Bu makro tarzının son derece nadir olduğunu düşünüyoruz. Lint, Rust 1.17’den beri gelecekte uyumsuzluk lint’i, Rust 1.20’den beri varsayılan deny lint’i, Rust 1.82’den itibaren bu kalıbı kullanan bağımlılıklar için uyarı veren bir lint idi; Rust 1.89’da ise kesin hata haline geldi.