How to check whether a non-sequential vector is a subset of another non-sequential vector in Rust

1 Answer

0 votes
use std::collections::HashSet;

fn is_subset(vec1: &[i32], vec2: &[i32]) -> bool {
    // Create a HashSet from vec1 for efficient lookup
    let set: HashSet<_> = vec1.iter().cloned().collect();

    // Check if all elements of vec2 exist in the HashSet
    vec2.iter().all(|&item| set.contains(&item))
}

fn main() {
    let vec1 = vec![5, 1, 8, 12, 40, 7, 9, 100]; 
    let vec2 = vec![8, 40, 9, 1];               // Subset vector

    if is_subset(&vec1, &vec2) {
        println!("Yes, vec2 is a subset of vec1");
    } else {
        println!("No, vec2 is not a subset of vec1");
    }
}

      
/*
run:

Yes, vec2 is a subset of vec1
     
*/

 



answered Mar 25, 2025 by avibootz
...