Ce face HashSet::is_subset
a.is_subset(&b) returnează true dacă fiecare element din a se găsește și în b. O mulțime goală este submulțime a oricărei mulțimi, iar orice mulțime este submulțime a ei însăși.
a.is_superset(&b) este verificarea inversă (b.is_subset(&a)). a.is_disjoint(&b) returnează true dacă cele două nu au niciun element comun.
Parametri
| Parametru | Descriere |
|---|---|
other |
Mulțimea cu care se compară. |
Ce returnează
bool.
Exemple
Exemplul 1: Am toate ingredientele?
use std::collections::HashSet;
fn main() {
let camara: HashSet<&str> = HashSet::from(["făină", "ouă", "lapte", "zahăr", "ulei"]);
let clatite: HashSet<&str> = HashSet::from(["făină", "ouă", "lapte"]);
let cozonac: HashSet<&str> = HashSet::from(["făină", "ouă", "lapte", "drojdie", "nucă"]);
println!("clătite: {}", clatite.is_subset(&camara));
println!("cozonac: {}", cozonac.is_subset(&camara));
println!("cămara le acoperă pe clătite: {}", camara.is_superset(&clatite));
let mut lipsa: Vec<_> = cozonac.difference(&camara).collect();
lipsa.sort();
println!("pentru cozonac lipsesc: {:?}", lipsa);
}
Rezultat
clătite: true
cozonac: false
cămara le acoperă pe clătite: true
pentru cozonac lipsesc: ["drojdie", "nucă"]
Exemplul 2: Ture fără suprapuneri
Două ture sunt compatibile dacă nu au nicio oră comună.
use std::collections::HashSet;
fn main() {
let dimineata: HashSet<u32> = (8..12).collect();
let pranz: HashSet<u32> = (11..15).collect();
let seara: HashSet<u32> = (16..20).collect();
println!("dimineață + prânz fără suprapunere? {}", dimineata.is_disjoint(&pranz));
println!("dimineață + seară fără suprapunere? {}", dimineata.is_disjoint(&seara));
let gol: HashSet<u32> = HashSet::new();
println!("mulțimea goală e submulțime: {}", gol.is_subset(&seara));
}
Rezultat
dimineață + prânz fără suprapunere? false
dimineață + seară fără suprapunere? true
mulțimea goală e submulțime: true
Greșeli frecvente
- Inversezi sensul:
a.is_subset(&b)întreabă dacăaeste conținută înb, nu invers. - Calculezi
a.intersection(&b).count() == 0pentru a verifica lipsa elementelor comune.is_disjointspune același lucru, mai clar.
Comenzi înrudite
HashSet::union: Operațiile cu mulțimi: reuniune (în oricare), intersecție (în ambele), diferență (doar în prima), diferență simetrică (în exact una).HashSet: O mulțime: ține fiecare valoare o singură dată și răspunde foarte repede dacă o valoare există. Ordinea nu e garantată.BTreeSet: Mulțime cu elementele mereu sortate: fără duplicate, ca HashSet, dar parcurgerea este în ordine crescătoare.Iterator::any: any verifică dacă măcar un element îndeplinește condiția; all verifică dacă toate o îndeplinesc. Se opresc cât de repede pot.