Множество из вектора в Rust
Значения из вектора переносят в множество циклом, и повторы пропадают. Обходят вектор так же, как в разделе про векторы, а каждый элемент дописывают в набор. Дубликаты в списке схлопываются, длина множества считает только уникальные значения.
Возьмем вектор с повтором и соберем множество:
use std::collections::HashSet;
fn main() {
let items = vec!["a", "b", "a", "c"];
let mut set = HashSet::new();
for v in &items {
set.insert(v.to_string());
}
println!("{}", set.len());
}
Длина 3, хотя в векторе четыре элемента.
Ссылка на вектор в цикле не забирает сам список,
его можно использовать дальше.
Тот же прием работает для вектора чисел:
use std::collections::HashSet;
fn main() {
let vals = vec![1, 2, 1];
let mut set = HashSet::new();
for v in &vals {
set.insert(*v);
}
println!("{}", set.len());
}
Дан вектор:
let words = vec!["go", "go", "rust"];
Соберите set циклом и выведите длину.
Дан вектор:
let vals = vec![5, 5, 5, 9];
Перенесите элементы в набор и выведите длину
и признак наличия 9.
Даны переменные:
let items: Vec<&str> = vec![];
let mut set = HashSet::new();
Обойдите items и скажите, какая длина
у set после цикла.