rustgym 0.2.0

rustgym solutions
Documentation
struct Solution;
use std::collections::HashSet;
use std::collections::VecDeque;

impl Solution {
    fn can_visit_all_rooms(rooms: Vec<Vec<i32>>) -> bool {
        let n = rooms.len();
        let mut visited: HashSet<usize> = HashSet::new();
        let mut queue: VecDeque<usize> = VecDeque::new();
        queue.push_back(0);
        while let Some(front) = queue.pop_front() {
            let room = &rooms[front];
            if visited.insert(front) {
                for &key in room {
                    queue.push_back(key as usize);
                }
            }
        }
        visited.len() == n
    }
}

#[test]
fn test() {
    let rooms = vec_vec_i32![[1], [2], [3], []];
    let res = true;
    assert_eq!(Solution::can_visit_all_rooms(rooms), res);
    let rooms = vec_vec_i32![[1, 3], [3, 0, 1], [2], [0]];
    let res = false;
    assert_eq!(Solution::can_visit_all_rooms(rooms), res);
}