Объединение множеств в Rust
Объединение собирает значения, которые есть хотя бы в одном множестве. Команда возвращает итератор: по нему идут циклом, как по элементам вектора по ссылке. Повторы между наборами схлопываются сами.
Объединим два набора строк и напечатаем элементы:
use std::collections::HashSet;
fn main() {
let mut a = HashSet::new();
a.insert("a".to_string());
a.insert("b".to_string());
let mut b = HashSet::new();
b.insert("b".to_string());
b.insert("c".to_string());
for n in a.union(&b) {
println!("{}", n);
}
}
На экране три разных текста: "a", "b"
и "c". Значение "b" встретилось в обоих
источниках, но в объединении остается один раз.
Тот же прием для целых:
use std::collections::HashSet;
fn main() {
let mut left = HashSet::new();
left.insert(1);
left.insert(2);
let mut right = HashSet::new();
right.insert(2);
right.insert(3);
let mut count = 0;
for _ in left.union(&right) {
count += 1;
}
println!("{}", count);
}
Даны переменные:
let mut a = HashSet::new();
a.insert("x".to_string());
let mut b = HashSet::new();
b.insert("y".to_string());
Соберите общий набор через перебор объединения
в both и выведите длину both.
Даны переменные:
let mut a = HashSet::new();
a.insert(1);
a.insert(2);
let mut b = HashSet::new();
b.insert(2);
b.insert(3);
Посчитайте элементы объединения и выведите число.
Одно множество пустое, второе содержит три значения. Сколько элементов будет в объединении?