Повторы в множестве в Rust
Повторное значение во множество не попадает второй раз. Каждый элемент хранится один раз, поэтому вторая попытка добавить то же число или ту же строку не создает копию. Команда добавления сообщает, было ли значение новым, но для учебных примеров достаточно знать: повтор на экране не появляется.
Два раза запишем одну строку и сравним с двумя разными:
use std::collections::HashSet;
fn main() {
let mut set = HashSet::new();
set.insert("a".to_string());
set.insert("a".to_string());
set.insert("b".to_string());
println!("{}", set.len());
}
Длина 2, а не 3. Значение "a"
осталось один раз, "b" добавилось отдельно.
Так множество отсекает повторы из исходного
списка, если элементы переносят в цикле.
То же для целых чисел:
use std::collections::HashSet;
fn main() {
let mut set = HashSet::new();
set.insert(1);
set.insert(1);
set.insert(2);
println!("{}", set.len());
}
Дано множество:
let mut set = HashSet::new();
Три раза допишите "x" и один раз
"y". Выведите длину.
Дан вектор:
let items = vec!["a", "a", "b"];
Соберите множество в uniq циклом по
items и выведите длину uniq.
Скажите, изменится ли длина, если снова добавить значение, которое уже есть.