CodeBlanks Logo Icon CodeBlanks

Dosya modülleri

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

main.rs
fn main() {
    // buraya yaz
}

Örnek çözüm

main.rs
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

Soru
pub mod istemci;
____ istemci::baglan;
Cevap
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)

Orta seviye bölümündeki tüm dersler