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