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,StringveHashMapile 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,Tilkpushç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,getkullanmak birOptiongeri döndürür.popfonksiyonu son elemanı siler. - Dilimler (slices) 3. günde ele alınacak. Şimdilik, öğrencilerin sadece
Vectüründeki bir değerin, belgelenmiş tüm dilim (slice) metotlarına da erişim sağladığını bilmeleri yeterlidir.