CodeBlanks Logo Icon CodeBlanks

Binary ve library crate

Binary ve library crate arasındaki farkı öğrenirsin.

Binary ve library crate

Crate, derleyicinin bir seferde derlediği en küçük birimdir. İki türü vardır: binary crate (src/main.rs, main fonksiyonu olan çalıştırılabilir program) ve library crate (src/lib.rs, başkalarının kullanacağı kod). Paket ise bir Cargo.toml ile tanımlanan, en fazla bir kütüphane ve istediğin kadar binary içeren birimdir:

fatura/
├── Cargo.toml
└── src/
    ├── lib.rs        // kütüphane: hesaplamalar
    ├── main.rs       // ana program: use fatura::kdv_ekle;
    └── bin/
        └── rapor.rs  // ek binary: cargo run --bin rapor

Kütüphaneyi kullanmak

Aynı paketteki binary, kütüphaneye paket adıyla erişir:

// src/lib.rs
pub fn kdv_ekle(tutar: f64) -> f64 {
    tutar * 1.20
}

// src/main.rs
use fatura::kdv_ekle;

fn main() {
    println!("{:.2}", kdv_ekle(100.0));
}

Alıştırmada iki dosya olmadığı için kütüphaneyi bir mod ile taklit edeceğiz.

Uygulama Kütüphane ve program

mod fatura içinde pub fn kdv_ekle(tutar: f64) -> f64 (yüzde 20 ekler) yaz. main'de use fatura::kdv_ekle; ile alıp kdv_ekle(100.0) sonucunu {:.2} ile yazdır.

Başlangıç kodu

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

Örnek çözüm

main.rs
mod fatura {
    pub fn kdv_ekle(tutar: f64) -> f64 {
        tutar * 1.20
    }
}

use fatura::kdv_ekle;

fn main() {
    println!("{:.2}", kdv_ekle(100.0));
}

Beklenen çıktı

120.00

Soru ve cevaplar

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

1 Mantığı <code>lib.rs</code>'e, girdi/çıktıyı <code>main.rs</code>'e koymanın yararı nedir?

  • Mantık test edilebilir ve başka programlarda yeniden kullanılabilir olur Doğru cevap
  • Derleme hızlanır her zaman
  • main.rs zorunlu değildir
  • Fark yok

Açıklama: Integration testleri yalnızca kütüphane crate'ine erişebilir; main.rs ince bir kabuk olarak kalmalıdır.

2 Kütüphane kökü

Soru
fatura/
└── src/
    ├── ____    // kütüphane crate
    └── main.rs   // binary crate
Cevap
fatura/
└── src/
    ├── lib.rs    // kütüphane crate
    └── main.rs   // binary crate

Açıklama: Kütüphane crate'inin kök dosyası src/lib.rs'dir.

3 Dosya ve rolü

Kavram Anlamı
src/main.rs Ana binary
src/lib.rs Kütüphane
src/bin/rapor.rs Ek binary
Cargo.toml Paket tanımı

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