Rust'taki modül sistemi mod anahtar kelimesi etrafında inşa edilmiştir. Modüller, kodun dosyalar ve isim alanları (namespace) etrafında mantıksal olarak bölünmesini sağlar. Temel noktalar:
pub, öğeyi tüm modül ağacı için kamuya açık hale getirir.pub(crate), tüm crate içinde erişilebilir (yani, kütüphane/proje).use mod_name::item) ve takma adlar (aliases) ile.Büyük projeler için, lib.rs veya main.rs aracılığıyla yalnızca kamuya açık arayüzlerin tanımlandığı bir modül ağacı kullanılması önerilir, geri kalan kısmı özel kalır:
mod network; mod storage; pub use network::api;
Eğer bir yapı pub olarak tanımlanmışsa, diğer crate'ler için erişilebilir hale gelir mi?
Cevap: Hayır, bir yapıyı sadece pub olarak işaretlemek yeterli değildir. Ayrıca, yapının dışa açık bir crate'de (pub mod) tanımlanması gerekir ve yapının alanlarının (fields) da kamuya açık olması gerekir, böylece onlara doğrudan erişim sağlanabilir.
Örnek:
mod foo { pub struct Bar; } // Bar, foo özel olduğu için dışarıdan görünmez
Hikaye
Hikaye
use * kullanımı sırasında derleme aşamasında isim çakışmaları oluştu. Çözüm, takma adlar eklemek ve yalnızca gerekli öğeleri içe aktarmak oldu.Hikaye
Pek çok yeni başlayan, bir yapıyı pub olarak oluşturuyor ancak alanlarını private bırakıyor, bu da modül dışındaki yapıların başlatılmasını imkansız hale getiriyor. Sonuç olarak, başka bir modülden bir fonksiyon, bu yapıyı doğrudan oluşturamıyordu, bu da alanlar veya yapıcılar (constructors) kamuya açık hale getirilene kadar hatalara neden oldu.