CodeBlanks Logo Icon CodeBlanks

Unit-like struct

Alansız (unit-like) struct türünü tanırsın.

Unit-like struct

Hiç alanı olmayan struct'a unit-like struct denir. Veri tutmaz, bellekte 0 bayt yer kaplar; bir davranışı (trait) taşımak ya da bir durumu tür düzeyinde işaretlemek için kullanılır:

struct Sessiz;

let s = Sessiz;
println!("{}", std::mem::size_of::<Sessiz>());   // 0

Örnek, süslü parantez olmadan yalnızca adla oluşturulur.

İşaretçi türler

Unit-like struct'lar tür sisteminde "etiket" olarak işe yarar. Örneğin bir bağlantının açık mı kapalı mı olduğunu çalışma anında bool yerine türle göstermek mümkündür:

struct Acik;
struct Kapali;

struct Kapi<Durum> { ad: String, durum: Durum }

let k = Kapi { ad: String::from("giriş"), durum: Kapali };

Bu "typestate" desenini ileri derslerde generic'lerle göreceksin. Şimdilik bilmen gereken: alan yoksa maliyet de yoktur.

Uygulama Boyutları ölç

struct Sessiz; ve struct Renk(u8, u8, u8); tanımla. std::mem::size_of ile ikisinin boyutunu boşlukla ayırarak yazdır.

Başlangıç kodu

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

Örnek çözüm

main.rs
struct Sessiz;
struct Renk(u8, u8, u8);

fn main() {
    println!("{} {}", std::mem::size_of::<Sessiz>(), std::mem::size_of::<Renk>());
}

Beklenen çıktı

0 3

Soru ve cevaplar

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

1 <code>std::mem::size_of::&lt;Renk&gt;()</code> nedir? (<code>struct Renk(u8, u8, u8);</code>)

  • 3 Doğru cevap
  • 0
  • 8
  • 24

Açıklama: Üç adet u8 alanı her biri 1 bayttır; hizalama gerekmez.

2 Alansız struct

Soru
struct Sessiz____

let s = Sessiz;
Cevap
struct Sessiz;

let s = Sessiz;

Açıklama: Unit-like struct noktalı virgülle biter; süslü parantez gerekmez.

3 Struct ve boyutu

Kavram Anlamı
struct Sessiz; 0 bayt
struct Renk(u8, u8, u8); 3 bayt
struct Tek(u32); 4 bayt
struct Cift(u64, u64); 16 bayt

Başlangıç bölümündeki tüm dersler

16 Proje: Yapılacaklar listesi

  1. Görev modeli
  2. Ekleme
  3. Listeleme
  4. İşaretleme
  5. Komut okuma