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:
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:
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:
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:
- 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); - 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
Ana yukarıdaki Kullanıcı yapısını şu alanlarla tanımlayın: kullanıcı adı (Dize türü) ve aktif (bool türü).
İpucu göster
`struct User { kullanıcı adı: String, active: bool }`before`main` yazın.
3 denemeden sonra çözüm mevcut
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.
İ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
Üç 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.
İ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