Метод symmetric_difference
Метод symmetric_difference возвращает
симметричную разность двух множеств. Он создаёт
итератор, который выдаёт элементы, присутствующие
ровно в одном из двух множеств, но не в обоих
одновременно. Параметром метод принимает ссылку
на другое множество HashSet, с которым
нужно вычислить симметричную разность.
Синтаксис
hashset.symmetric_difference(&other)
Пример
Давайте найдём симметричную разность двух множеств:
use std::collections::HashSet;
fn main()
{
let set1: HashSet<i32> = vec![1, 2, 3, 4, 5].into_iter().collect();
let set2: HashSet<i32> = vec![3, 4, 5, 6, 7].into_iter().collect();
let res: HashSet<&i32> = set1.symmetric_difference(&set2).collect();
println!("{:?}", res);
}
Результат выполнения кода:
{1, 2, 6, 7}
Пример
Давайте найдём симметричную разность множества с самим собой:
use std::collections::HashSet;
fn main()
{
let set1: HashSet<i32> = vec![1, 2, 3, 4, 5].into_iter().collect();
let res: HashSet<&i32> = set1.symmetric_difference(&set1).collect();
println!("{:?}", res);
}
Результат выполнения кода:
{}
Пример
Давайте найдём симметричную разность двух непересекающихся множеств:
use std::collections::HashSet;
fn main()
{
let set1: HashSet<&str> = vec!["a", "b", "c"].into_iter().collect();
let set2: HashSet<&str> = vec!["d", "e"].into_iter().collect();
let res: HashSet<&&str> = set1.symmetric_difference(&set2).collect();
println!("{:?}", res);
}
Результат выполнения кода:
{"a", "b", "c", "d", "e"}
Смотрите также
-
метод
union,
который возвращает объединение двух множеств -
метод
intersection,
который возвращает пересечение двух множеств -
метод
difference,
который возвращает разность двух множеств -
метод
contains,
который проверяет наличие элемента в множестве