CodeBlanks Logo Icon CodeBlanks

Özet - Modüller

mod, use ve pub'ı birleştirerek çok dosyalı bir crate kurarsın.

Modüller özeti

mod bir modül ağacı kurar; öğeler varsayılan olarak gizlidir ve pub ile açılır (struct alanları tek tek). use yolları kısaltır, as yeniden adlandırır, pub use yeniden dışa aktarır. Yollar crate::, super::, self:: ile başlayabilir. Modüller ayrı dosyalara (ag.rs, ag/istemci.rs) konabilir. İnce görünürlük: pub(crate), pub(super).

Gizli iç modül

Kütüphane yazarları ayrıntıları gizli iç modüllere koyar ve dışarıya küçük bir yüzey açar:

mod kutuphane {
    mod ic {
        pub fn gizli_hesap(x: i32) -> i32 {
            x * 3
        }
    }

    pub fn hesapla(x: i32) -> i32 {
        ic::gizli_hesap(x) + 1
    }
}

// kutuphane::ic::gizli_hesap(4);   // hata: ic gizli
println!("{}", kutuphane::hesapla(4));   // 13

Uygulama Küçük yüzey

Yukarıdaki kutuphane modülünü yaz: gizli ic modülünde gizli_hesap, dışarıda pub fn hesapla. kutuphane::hesapla(4) sonucunu yazdır.

Başlangıç kodu

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

Örnek çözüm

main.rs
mod kutuphane {
    mod ic {
        pub fn gizli_hesap(x: i32) -> i32 {
            x * 3
        }
    }

    pub fn hesapla(x: i32) -> i32 {
        ic::gizli_hesap(x) + 1
    }
}

fn main() {
    println!("{}", kutuphane::hesapla(4));
}

Beklenen çıktı

13

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 İç bir modülü tamamen gizleyip yalnızca bir fonksiyonu dışarı açmak için ne yapılır?

  • Mümkün değil
  • Modülü pub yapmadan, üstte pub fn ile sarmalamak ya da pub use etmek Doğru cevap
  • Modülü pub yapmak
  • unsafe kullanmak

Açıklama: Gizli bir modülün pub öğeleri, yalnızca o modülü görebilen kod tarafından kullanılabilir; dışarı açmak için üst modülden bir kapı gerekir.

2 Crate içi görünürlük

Soru
____(crate) fn yardimci() {}
Cevap
pub(crate) fn yardimci() {}

Açıklama: pub(crate) öğeyi yalnızca aynı crate içinde açar.

3 Grubun özeti

Kavram Anlamı
mod x { } Modül
pub Dışarı açar
use a::b Kısaltma
pub use Yeniden dışa aktarma

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