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