Unit-like struct
- Rust kursu
- Başlangıç
- Ders 68/115
- 4 dk
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
fn main() {
// buraya yaz
}Örnek çözüm
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::<Renk>()</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
struct Sessiz____
let s = Sessiz;
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 |