Dosya modülleri
- Rust kursu
- Orta seviye
- Ders 74/115
- 4 dk
Dosya tabanlı modül hiyerarşisini öğrenirsin.
Dosya modülleri
Büyük projelerde modüller ayrı dosyalara konur. mod ag; bildirimi (gövdesiz), derleyiciye içeriği dosyadan okumasını söyler:
src/
├── main.rs // mod ag;
├── ag.rs // pub mod istemci;
└── ag/
└── istemci.rs // pub fn baglan() { .. }Eski düzen ag/mod.rs da hâlâ geçerlidir; ikisi aynı anda kullanılamaz. Dosya sistemi yapısı modül ağacını birebir yansıtır.
pub use ile yeniden dışa aktarma
İç yapı derin olsa bile kullanıcıya kısa yollar sunulabilir. pub use bir öğeyi üst modülde yeniden dışa aktarır:
// src/ag.rs
pub mod istemci;
pub use istemci::baglan; // ag::baglan olarak da erişilir
// main.rs
mod ag;
fn main() {
ag::baglan();
ag::istemci::baglan(); // ikisi de çalışır
}Kütüphaneler bu yöntemle iç dosya düzenini değiştirse bile genel API'yi sabit tutar.
Uygulama Yeniden dışa aktarma
Dosya düzenini satır içi modüllerle taklit et: mod ag içinde pub mod istemci ve onun içinde "bağlandı" döndüren pub fn baglan() -> &'static str. ag içinde pub use istemci::baglan; yaz. ag::baglan() ve ag::istemci::baglan() sonuçlarını boşlukla yazdır.
Başlangıç kodu
fn main() {
// buraya yaz
}Örnek çözüm
mod ag {
pub mod istemci {
pub fn baglan() -> &'static str {
"bağlandı"
}
}
pub use istemci::baglan;
}
fn main() {
println!("{} {}", ag::baglan(), ag::istemci::baglan());
}Beklenen çıktı
bağlandı bağlandı
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 <code>src/ag.rs</code> dosyası var ama <code>main.rs</code>'de <code>mod ag;</code> yazılmamışsa ne olur?
- Otomatik dahil edilir
- Derleme hatası
- Uyarı verir
- Dosya hiç derlenmez; modül ağacına dahil değildir Doğru cevap
Açıklama: Rust'ta dosyalar otomatik bulunmaz; her modül üst modülde mod ile bildirilmelidir.
2 Yeniden dışa aktar
pub mod istemci;
____ istemci::baglan;
pub mod istemci;
pub use istemci::baglan;
Açıklama: pub use öğeyi bulunduğu modülün API'sine ekler.
3 Dosya ve modül yolu
| Kavram | Anlamı |
|---|---|
src/main.rs |
crate |
src/ag.rs |
crate::ag |
src/ag/istemci.rs |
crate::ag::istemci |
src/ag/mod.rs |
crate::ag (eski düzen) |