Ana içeriğe geç
Modül 4 · Ders 1 ders 2Kurstaki 7/14~12 min
Modül dersleri (1/2)

Yapıları Tanımlama ve Örnekleme

Rust'taki yapılar (veya yapılar), birden fazla ilgili değeri birlikte gruplamanıza olanak tanıyan özel veri türleridir. Diğer dillerdeki nesnelere veya sınıflara benzerler ancak mirasları yoktur.

Yapı Tanımlama

Bir yapı tanımlamak için struct anahtar sözcüğünü ve ardından PascalCase içindeki adı kullanırız. İçeride alanların adlarını ve türlerini tanımlıyoruz:

Rust
struct User {
    username: String,
    email: String,
    active: bool,
    sign_in_count: u64,
}

Örnek Oluşturma

Bir yapıyı kullanmak için belirtilen tüm alanları doldurarak bir örnek oluşturmalıyız:

Rust
fn main() {
    let user1 = User {
        email: String::from("alice@example.com"),
        username: String::from("alice123"),
        active: true,
        sign_in_count: 1,
    };

    // Access fields using dot notation
    println!("Is user {} active? {}", user1.username, user1.active);
}

Yapı Değiştirilebilirliği

Rust'ta, alanlarından herhangi birini değiştirmek istiyorsanız örneğin tamamının değiştirilebilir (mut) olarak işaretlenmesi gerekir. Rust yalnızca belirli alanların değiştirilebilir olarak işaretlenmesine izin vermez:

Rust
fn main() {
    let mut user1 = User {
        email: String::from("alice@example.com"),
        username: String::from("alice123"),
        active: true,
        sign_in_count: 1,
    };

    user1.active = false; // Valid because user1 is mutable!
}

Tuple Yapıları ve Birim Benzeri Yapılar

Rust ayrıca klasik adlandırılmış alan yapılarının yanı sıra diğer iki yapı formatını da destekler:

  1. Tuple Yapıları: İlişkili bir adları vardır ancak alanların bireysel adları yoktur, yalnızca türleri vardır. Belirli türleri tanımlamak ve ayırt etmek için kullanışlıdırlar:
    Rust
    struct Point(i32, i32, i32);
    let origin = Point(0, 0, 0);
  2. Birim Benzeri Yapılar: Herhangi bir alanı tanımlamazlar. () birim tipi gibi davranırlar. Bir türe herhangi bir veri depolamadan davranışları (özellikleri) uygulamanız gerektiğinde kullanışlıdırlar.

Kendin dene

Egzersiz#rust.m4.l1.e1
Denemeler: 0Yükleniyor…

Ana yukarıdaki Kullanıcı yapısını şu alanlarla tanımlayın: kullanıcı adı (Dize türü) ve aktif (bool türü).

Düzenleyici yükleniyor…
İpucu göster

`struct User { kullanıcı adı: String, active: bool }`before`main` yazın.

3 denemeden sonra çözüm mevcut

Egzersiz#rust.m4.l1.e2
Denemeler: 0Yükleniyor…

Kullanıcı1'i değiştirilebilir hale getirmek için değiştirin (kullanıcı1'in mut olmasına izin verin) ve yazdırmadan önce aktif alanı false olarak değiştirin.

Düzenleyici yükleniyor…
İpucu göster

Kullanıcı1'in mut olmasını sağlamak için kullanıcı1'e "mut" ekleyin, ardından "kullanıcı1.active = false;" ekleyin.

3 denemeden sonra çözüm mevcut

Egzersiz#rust.m4.l1.e3
Denemeler: 0Yükleniyor…

Üç i32 alanı içeren Color adında bir tanımlama grubu yapısı tanımlayın. Ana olarak, Color'ı my_color değişkenine atayarak 255, 0 ve 100 değerleriyle somutlaştırın, ardından println! kullanarak ilk öğesini (kırmızı değer) yazdırın.

Düzenleyici yükleniyor…
İpucu göster

Tuple yapısını 'struct Color(i32, i32, i32);' ile tanımlayın. Temelde bunu `let my_color = Color(255, 0, 100);`olarak başlatın ve kırmızı değeri`my_color.0` ile yazdırın.

3 denemeden sonra çözüm mevcut