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

Cargo: Kullanılmayan Kalıtılmış default-features Alanlarını Reddetme

Özet

  • Çalışma alanı bağımlılığı default-features = true belirtiyorsa (ya da default-features hiç belirtmiyorsa), kalıtılan çalışma alanı bağımlılığında default-features = false artık kullanılamaz.

Ayrıntılar

Çalışma alanı kalıtımı, bağımlılıkları tek bir yerde, yani çalışma alanında belirtmenize ve sonra bu çalışma alanı bağımlılıklarına paket içinden başvurmanıza izin verir. default-features belirtme biçimiyle ilgili istemeden oluşmuş bir etkileşim vardı; buna 2024 sürümünde artık izin verilmiyor.

Çalışma alanı default-features = false demediği sürece, kalıtılan paket bağımlılığında default-features = false yazmaya artık izin yoktur. Örneğin şöyle bir çalışma alanı düşünün:

[workspace.dependencies]
regex = "1.10.4"

Aşağıdaki kullanım artık hatadır:

[package]
name = "foo"
version = "1.0.0"
edition = "2024"

[dependencies]
regex = { workspace = true, default-features = false }  # HATA

Bu değişikliğin nedeni, varsayılan özellik zaten etkin olduğunda default-features = false yazmanın hiçbir etkisi olmamasına rağmen kafa karıştırmasını önlemektir.

Bir bağımlılığın varsayılan özellikleri etkinleştirip etkinleştirmemesine dair esneklik istiyorsanız, çalışma alanı tanımında default-features = false ayarladığınızdan emin olun. Yalnız birden fazla çalışma alanı üyesini aynı anda derlerseniz özelliklerin birleştirileceğini unutmayın; üyelerden biri default-features = true ayarlarsa (ya da hiç belirtmezse, çünkü varsayılan budur), bu bağımlılığı kullanan tüm üyelerde varsayılan özellikler etkin olur.

Taşıma

cargo fix --edition kullanıldığında Cargo, bu durumda Cargo.toml dosyanızdan default-features = false ifadesini otomatik olarak kaldırır.

Cargo.toml dosyanızı elle güncellemek isterseniz, derleme sırasında çıkan uyarılara bakın ve ilgili girişleri kaldırın. Önceki sürümler şöyle bir uyarı gösterir:

warning: /home/project/Cargo.toml: regex için `default-features` yok sayılıyor,
çünkü `workspace.dependencies.regex` için `default-features` belirtilmedi;
bu ileride kesin hataya dönüşebilir