Vec
Vec
, standart yeniden boyutlandırılabilir dinamik bellekten tahsis edilen arabellektir (heap-allocated buffer):
fn main() { let mut v1 = Vec::new(); v1.push(42); println!("v1: uzunluk = {}, kapasite = {}", v1.len(), v1.capacity()); let mut v2 = Vec::with_capacity(v1.len() + 1); v2.extend(v1.iter()); v2.push(9999); println!("v2: uzunluk = {}, kapasite = {}", v2.len(), v2.capacity()); // Bir vektörü elemanlarla ilklendirmek (initialize) için standart makro. let mut v3 = vec![0, 0, 1, 2, 3, 4]; // Sadece çift elemanları tut. v3.retain(|x| x % 2 == 0); println!("{v3:?}"); // Ardışık kopyaları sil. v3.dedup(); println!("{v3:?}"); }
Vec
, Deref<Target = [T]>
özelliğini gerçekleştirir (implement), bu da bir Vec
üzerinde dilim (slice) metotlarını çağırabileceğiniz anlamına gelir.
This slide should take about 5 minutes.
Vec
,String
veHashMap
ile birlikte bir koleksiyon türüdür. İçerdiği veriler dinamik bellekte (heap) saklanır. Bu, veri miktarının derleme zamanında bilinmesi gerekmediği anlamına gelir. Çalışma zamanında büyüyebilir veya küçülebilir.Vec<T>
’nin de genelleştirilmiş (generic) bir tür olduğuna, ancakT
’yi açıkça belirtmek zorunda olmadığınıza dikkat edin. Rust tür çıkarımında (type inference) her zaman olduğu gibi,T
ilkpush
çağrısı sırasında belirlenmiştir.vec![...]
,Vec::new()
yerine kullanılacak standart bir makrodur ve vektöre başlangıç elemanları eklemeyi destekler.- Vektörün elemanlarına erişmek için
[
]
kullanırsınız, ancak sınırlar dışındaysa paniğe (panic) neden olurlar. Alternatif olarak,get
kullanmak birOption
geri döndürür.pop
fonksiyonu son elemanı siler. - Dilimler (slices) 3. günde ele alınacak. Şimdilik, öğrencilerin sadece
Vec
türündeki bir değerin, belgelenmiş tüm dilim (slice) metotlarına da erişim sağladığını bilmeleri yeterlidir.