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