CodeBlanks Logo Icon CodeBlanks

Crate iskeleti

lib.rs ile kütüphane crate'ini kurarsın.

Kütüphane projesi: iskelet

Bu projede kitapları rafta tutan ve arama yapan küçük bir kütüphane crate'i yazacağız. Kütüphane crate'i main yerine başkalarının kullanacağı bir API sunar:

$ cargo new --lib kitaplik
$ tree kitaplik
kitaplik
├── Cargo.toml
└── src
    └── lib.rs

Alıştırmalarda her şeyi tek dosyada, bir mod kitaplik { .. } bloğu içinde yazacağız; gerçek projede bu içerik src/lib.rs'te durur ve dışarıdan use kitaplik::Kitap; ile kullanılır.

Modül ve görünürlük

Modül içindeki her şey varsayılan olarak gizlidir. Dışarıdan kullanılacak öğeler pub ile işaretlenir; struct'ın kendisi pub olsa bile alanları ayrıca pub olmalıdır:

mod kitaplik {
    pub struct Kitap {
        pub ad: String,
        pub yazar: String,
        pub yil: u16,
    }
}

use kitaplik::Kitap;

İlk sürümde alanları açık bırakıyoruz; bir sonraki derste API'yi kapsülleyeceğiz.

Uygulama İlk kitap

mod kitaplik içinde alanları pub olan Kitap { ad: String, yazar: String, yil: u16 } tanımla. main'de use ile al, Tutunamayanlar / Oğuz Atay / 1972 kitabını oluştur ve ad - yazar (yil) biçiminde yazdır.

Başlangıç kodu

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

Örnek çözüm

main.rs
mod kitaplik {
    pub struct Kitap {
        pub ad: String,
        pub yazar: String,
        pub yil: u16,
    }
}

use kitaplik::Kitap;

fn main() {
    let k = Kitap {
        ad: String::from("Tutunamayanlar"),
        yazar: String::from("Oğuz Atay"),
        yil: 1972,
    };
    println!("{} - {} ({})", k.ad, k.yazar, k.yil);
}

Beklenen çıktı

Tutunamayanlar - Oğuz Atay (1972)

Soru ve cevaplar

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

1 <code>cargo new --lib</code> hangi dosyayı oluşturur?

  • src/main.rs
  • lib/mod.rs
  • src/kitaplik.rs
  • src/lib.rs Doğru cevap

Açıklama: Kütüphane crate'inin kökü src/lib.rs, ikili crate'in kökü src/main.rs'dir. Bir paket ikisini birden içerebilir.

2 Dışarı aç

Soru
mod kitaplik {
    ____ struct Kitap {
        pub ad: String,
    }
}
Cevap
mod kitaplik {
    pub struct Kitap {
        pub ad: String,
    }
}

Açıklama: pub, öğeyi modül dışından erişilebilir yapar.

3 Öğe ve görünürlüğü

Kavram Anlamı
struct Kitap (pub yok) Yalnızca modül içi
pub struct Kitap Tür dışarıda görünür
pub ad: String Alan dışarıda görünür
use kitaplik::Kitap Kapsama alır

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