Modules: mod.rs ve Proje Dosya Düzeni Rehberi

  • Konbuyu başlatan Konbuyu başlatan irfo
  • Başlangıç tarihi Başlangıç tarihi

irfo

Moderatör
Katılım
7 Ocak 2026
Mesajlar
290
Tepkime puanı
2
Puanları
18
Rust'ta projeler büyüdükçe tüm kodu tek bir dosyada (main.rs) tutmak imkansız hale gelir. Modül sistemi, kodu mantıksal parçalara ayırmanızı, gizliliği (privacy) yönetmenizi ve kodun yeniden kullanılabilirliğini sağlamanızı sağlar.
Rust'ın modül sistemi diğer dillere göre biraz farklıdır; dosya sistemiyle sıkı bir bağı vardır ancak bazı katı kuralları bulunur.

1. Temel Kavramlar: Crate, Module ve Path​

  • Crate: Bir projenin en üst birimidir (Binary veya Library).
  • Module: Bir crate içindeki kod organizasyon birimidir.
  • Path: Bir öğeye (struct, fonksiyon) ulaşmak için kullanılan yoldur (std::collections::HashMap gibi).

2. Modül Tanımlama Yöntemleri​

Rust'ta modül oluşturmanın üç ana yolu vardır:

A. Aynı Dosya İçinde (Inline)​

Küçük parçalar için kodun üst kısmına yazılır.
Rust
Kod:
mod bahce {
    pub fn bitki_ek() { /* ... */ }
}

B. Farklı Dosyada​

src/bahce.rs adında bir dosya oluşturursunuz. main.rs içinde sadece mod bahce; yazarak onu projeye dahil edersiniz.

C. Klasör Yapısı (Modern Yöntem)​

Eğer bahce modülünün altında başka alt modüller olacaksa bir klasör oluşturursunuz.

3. mod.rs vs. Modern Dosya Düzeni​

Rust 2018 sürümünden önce, bir klasörü modül yapmak için içinde mutlaka mod.rs dosyası olması gerekiyordu. Artık iki seçenek de geçerli:
  • Eski Stil: src/bahce/mod.rs (Bu dosya ana modül dosyasidir).
  • Modern Stil: src/bahce.rs (dosya) + src/bahce/ (klasör içindeki alt modüller).
Örnek Klasör Yapısı:
Plaintext
Kod:
src/
├── main.rs
├── bahce.rs        (Bahçe modülünün ana tanımları)
└── bahce/
    ├── sebzeler.rs (bahce::sebzeler alt modülü)
    └── meyveler.rs (bahce::meyveler alt modülü)

4. Gizlilik (Privacy): pub Anahtar Kelimesi​

Rust'ta her şey varsayılan olarak özeldir (private). Bir modülün içindekilere dışarıdan erişmek için pub anahtar kelimesini kullanmalısınız.
  • pub: Herkese açık.
  • pub(crate): Sadece mevcut proje içinde açık.
  • pub(super): Sadece üst modülde açık.
Rust
Kod:
mod bahce {
    pub fn ek() {}    // Dışarıdan çağrılabilir
    fn gizli_is() {}  // Sadece bu modül içinde çalışır
}

5. use Anahtar Kelimesi ve Re-exporting​

Uzun yolları her seferinde yazmamak için use ile öğeleri kapsama dahil ederiz.
Rust
Kod:
use crate::bahce::sebzeler::Domates;

let d = Domates::new();
Re-exporting (pub use): İç kütüphane yapınız karmaşıksa, kullanıcılarınıza daha temiz bir yol sunmak için öğeleri en üst modülde tekrar yayınlayabilirsiniz.

Özet​

YapıAçıklama
modBir modülü tanımlar veya bir dosyayı içeri aktarır.
useBir yolu (path) kapsama getirir, kısayol oluşturur.
pubÖğeyi erişilebilir kılar.
crateKök modülden (main.rs veya lib.rs) başlayan mutlak yolu temsil eder.
 
Geri
Üst