Calcule la diferencia entre dos conjuntos en Rust

Nilesh Katuwal 21 junio 2023
  1. Juego de hachís en Rust
  2. Calcule la diferencia entre dos conjuntos en Rust
Calcule la diferencia entre dos conjuntos en Rust

Este artículo discutirá la función incorporada para calcular la diferencia entre dos conjuntos.

Juego de hachís en Rust

Un conjunto hash se implementa como un HashMap donde el valor es (). Al igual que con el tipo, los elementos de un HashSet deben implementar los rasgos Eq y Hash.

Por lo general, esto se puede lograr con #[derive(PartialEq, Eq, hash)]. Sin embargo, si los implementa por su cuenta, deben cumplir las siguientes características.

Sintaxis:

let mut HashSet_name= HashSet::new();

Necesitamos saber si dos llaves son iguales; sus hashes también deben ser iguales.

Ejemplo:

fn main() {
use std::collections::HashSet;
let mut foods = HashSet::new();
foods.insert("I love to eat".to_string());
foods.insert("Ramen with cheese".to_string());
foods.insert("Ramen with eggs".to_string());
foods.insert("Ramen with seaweed".to_string());

if !foods.contains("Sesame") {
    println!("We have {} foods, but sesame is not the one I wanted.",
             foods.len());
}
foods.remove("Ramen with eggs.");

for food in &foods {
    println!("{food}");
}
}

Producción :

We have 4 foods, but sesame is not the one I wanted.
Ramen with cheese
Ramen with seaweed
Ramen with eggs
I love to eat

Si inserta un valor en el HashSet (es decir, el nuevo valor es idéntico al valor existente y ambos tienen el mismo hash), el nuevo valor reemplazará al anterior.

Los conjuntos tienen cuatro operaciones fundamentales (cada una de las llamadas posteriores devuelve un iterador):

  1. unión - obtener todos los elementos distintos de ambos conjuntos.
  2. diferencia: recuperar todos los elementos del primer conjunto ausentes del segundo.
  3. intersección: recupere todos los elementos únicos de ambos conjuntos.
  4. diferencia simétrica: recupera todos los elementos de cualquier conjunto pero no de ambos.

A continuación se muestra un ejemplo para encontrar la diferencia entre conjuntos. Necesitamos saber que la diferencia no es simétrica.

fn main() {
use std::collections::HashSet;
let x = HashSet::from([1, 2, 3]);
let y = HashSet::from([4, 2, 3, 4]);

for z in x.difference(&y) {
    println!("{z}");
}

let diff: HashSet<_> = x.difference(&y).collect();
assert_eq!(diff, [1].iter().collect());

let diff: HashSet<_> = y.difference(&x).collect();
assert_eq!(diff, [4].iter().collect());
}

Producción :

1

Calcule la diferencia entre dos conjuntos en Rust

Este programa construirá dos HashSets para almacenar los elementos enteros, encontrar la diferencia entre los dos conjuntos y mostrar el resultado. Estos dos HashSets pueden almacenar elementos enteros en el siguiente código fuente.

A continuación, se determinó la diferencia entre los dos conjuntos utilizando la técnica de diferencia(). Luego, imprimimos el resultado.

use std::collections::HashSet;

fn main() {
    let first_set: HashSet<_> = [10, 20, 30, 40].iter().cloned().collect();
    let second_set: HashSet<_> = [10, 20, 30].iter().cloned().collect();

    println!("The difference betwen first_set and second_set is:");
    for d in first_set.difference(&second_set) {
        print!("{} ", d);
    }
}

Producción :

The difference betwen first_set and second_set is:
40