Binary ve library crate
- Rust kursu
- Orta seviye
- Ders 77/115
- 4 dk
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 raporKü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
fn main() {
// buraya yaz
}Örnek çözüm
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ü
fatura/
└── src/
├── ____ // kütüphane crate
└── main.rs // binary crate
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ı |