String
String türü, büyüyebilir, UTF-8 olarak kodlanmış bir dizedir (string):
fn main() { let mut s1 = String::new(); s1.push_str("Merhaba"); println!("s1: uzunluk = {}, kapasite = {}", s1.len(), s1.capacity()); let mut s2 = String::with_capacity(s1.len() + 1); s2.push_str(&s1); s2.push('!'); println!("s2: uzunluk = {}, kapasite = {}", s2.len(), s2.capacity()); let s3 = String::from("🇹🇷"); println!("s3: uzunluk = {}, karakter sayısı = {}", s3.len(), s3.chars().count()); }
String, Deref<Target = str> özelliğini gerçekleştirir (implement), bu da bir String üzerinde tüm str metotlarını çağırabileceğiniz anlamına gelir.
This slide should take about 5 minutes.
String::newyeni bir boş dize geri döndürür, dizeye ne kadar veri eklemek istediğinizi bildiğinizdeString::with_capacitykullanın.String::len,String’in bayt cinsinden boyutunu geri döndürür (bu, karakter cinsinden uzunluğundan farklı olabilir).String::chars, gerçek karakterler üzerinde bir adımlayıcı (iterator) geri döndürür. yazıbirim (grapheme) kümeleri nedeniyle birchar’ın bir insanın “karakter” olarak kabul edeceği şeyden farklı olabileceğini unutmayın.- İnsanlar dizelerden (strings) bahsettiğinde, ya
&strya daString’den bahsediyor olabilirler. - Bir tür
Deref<Target = T>’yi gerçekleştirdiğinde (implement), derleyiciT’den metotları şeffaf bir şekilde çağırmanıza izin verir.Derefözelliğini (trait) henüz tartışmadık, bu yüzden bu noktada bu çoğunlukla dokümantasyondaki kenar çubuğunun yapısını (neden String türünün altında str metodlarının da görüldüğünü) açıklar.String,Deref<Target = str>özelliğini gerçekleştirir (implement) ve bu ona şeffaf bir şekildestr’nin metotlarına erişim sağlar.let s3 = s1.deref();velet s3 = &*s1;yazıp karşılaştırın.
String, bir bayt vektörü etrafında bir sarmalayıcı (wrapper) olarak gerçekleştirilmiştir (implement), vektörlerde desteklenen birçok işlemString’de de desteklenir, ancak bazı ek garantilerle.- Bir
String’e erimenin farklı yollarını karşılaştırın:i’nin sınırlar içinde veya dışında olduğus3.chars().nth(i).unwrap()kullanarak bir karaktere erişmek.- Bu dilimin (slice) karakter sınırlarına denk gelip gelmediği durumlarda
s3[0..4]kullanarak bir alt dizeye erişmek.
- Birçok tür,
to_stringmetodu ile bir dizeye dönüştürülebilir. Bu özellik (trait),Display’i gerçekleştiren (implement) tüm türler için otomatik olarak gerçekleştirilir, bu nedenle biçimlendirilebilen (format) her şey bir dizeye de dönüştürülebilir.