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
به تمام متدهای مستند شده برشها نیز دسترسی دارد.