Динамічний масив (growable array). На heap. Можна додавати/видаляти елементи.
let mut v = Vec::new();
v.push(1);
v.push(2);
v.push(3);
println!("{:?}", v); // [1, 2, 3]
let vec = vec![1, 2, 3]; // macro
let first = &vec[0]; // 1
let opt = vec.get(10); // None
Динамічний, growable text (UTF-8). На heap. str - fixed-size reference.
let mut s = String::from("hello");
s.push_str(" world"); // мutable
println!("{}", s); // "hello world"
let s2 = &s; // &String -> &str coercion
let s3: &str = "literal"; // string literal
let v = vec![1, 2, 3, 4, 5];
for item in &v {
println!("{}", item);
}
for item in v.iter() {
println!("{}", item);
}
let doubled: Vec<_> = v.iter().map(|x| x * 2).collect();
Хеш-таблиця для пар ключ-значення. O(1) lookup середня.
use std::collections::HashMap;
let mut map = HashMap::new();
map.insert("key1", "value1");
map.insert("key2", "value2");
let val = map.get("key1"); // Some("value1")
let val_or = map.get("key3").copied().unwrap_or("");
for (k, v) in &map {
println!("{}: {}", k, v);
}
Лекція 18: Модули та Организация коду
Дякую за увагу! 💾