Аналог set() из python в rust

В python есть такой тип, как множество. Он выглядит так: set().

По своей семантике напоминает список, однако, как могу судить, в нем хранятся только хеши добавленных объектов.

Это удобно, для проверки на вхождение данных в определенную группу.

В раст можно использовать HashMap, но он, кажется, служит в первую очередь для того, чтобы связывать несколько объектов.

Стоит ли использовать HashMap для таких задач, как проверка на вхождение строки в список заданных строк или есть более подходящие методы?


Ответы (1 шт):

Автор решения: n1tr0xs

Используйте HashSet:

use std::collections::HashSet;
let mut books = HashSet::new();

// Добавление элементов
books.insert("A Dance With Dragons".to_string());
books.insert("To Kill a Mockingbird".to_string());
books.insert("The Odyssey".to_string());
books.insert("The Great Gatsby".to_string());

// Проверка на вхождение
if !books.contains("The Winds of Winter") {
    println!("We have {} books, but The Winds of Winter ain't one.",
             books.len());
}

// Удалить объект
books.remove("The Odyssey");

// Итерируемся
for book in &books {
    println!("{book}");
}
→ Ссылка