Vec
این Vec بافر قابل تغییر اندازه و heap-allocated است:
fn main() { let mut v1 = Vec::new(); v1.push(42); println!("v1: len = {}, capacity = {}", v1.len(), v1.capacity()); let mut v2 = Vec::with_capacity(v1.len() + 1); v2.extend(v1.iter()); v2.push(9999); println!("v2: len = {}, capacity = {}", v2.len(), v2.capacity()); // Canonical macro to initialize a vector with elements. let mut v3 = vec![0, 0, 1, 2, 3, 4]; // Retain only the even elements. v3.retain(|x| x % 2 == 0); println!("{v3:?}"); // Remove consecutive duplicates. v3.dedup(); println!("{v3:?}"); }
Vec پیادهسازیکننده Deref<Target = [T]> است، به این معنی که میتوانید متدهای برش را بر روی یک Vec فراخوانی کنید.
This slide should take about 5 minutes.
Vecنوعی مجموعه است، به همراهStringوHashMap. دادههای آن در حافظه heap ذخیره میشود. به این معنی که مقدار دادهها نیازی به دانستن در زمان کامپایل ندارد و میتواند در زمان اجرا رشد یا کوچک شود.- توجه داشته باشید که
<Vec<Tنیز یک تایپ generic است، اما نیازی به تعیین صریحTندارید. همانطور که همیشه با استنتاج تایپ در Rust ،Tدر زمان اولین فراخوانیpushمشخص شده است. [...]!vecیک ماکرو استاندارد برای استفاده بهجای()Vec::newاست و از افزودن عناصر اولیه به vector پشتیبانی میکند.- برای ایندکسگذاری vector از
[]استفاده میکنید، اما اگر از محدوده خارج شود، باعث panic میشود. بهطور جایگزین، استفاده ازgetیکOptionرا برمیگرداند. تابعpopآخرین عنصر را حذف میکند. - برشها در روز سوم پوشش داده میشوند. در حال حاضر، دانشآموزان تنها باید بدانند که یک مقدار از تایپ
Vecبه تمام متدهای مستند شده برشها نیز دسترسی دارد.