## 1893. Check if All the Integers in a Range Are Covered

You are given a 2D integer array `ranges`

and two integers `left`

and `right`

. Each `ranges[i] = [start`

represents an _{i}, end_{i}]**inclusive** interval between `start`

and _{i}`end`

._{i}

Return `true`

*if each integer in the inclusive range* `[left, right]`

*is covered by at least one interval in*

`ranges`

. Return `false`

*otherwise*.

An integer `x`

is covered by an interval `ranges[i] = [start`

if _{i}, end_{i}]`start`

._{i} <= x <= end_{i}

**Example 1:**

Input:ranges = [[1,2],[3,4],[5,6]], left = 2, right = 5Output:trueExplanation:Every integer between 2 and 5 is covered: - 2 is covered by the first range. - 3 and 4 are covered by the second range. - 5 is covered by the third range.

**Example 2:**

Input:ranges = [[1,10],[10,20]], left = 21, right = 21Output:falseExplanation:21 is not covered by any range.

**Constraints:**

`1 <= ranges.length <= 50`

`1 <= start`

_{i}<= end_{i}<= 50`1 <= left <= right <= 50`

## Rust Solution

```
struct Solution;
use std::collections::HashSet;
impl Solution {
fn is_covered(ranges: Vec<Vec<i32>>, left: i32, right: i32) -> bool {
let mut a = HashSet::new();
let mut b = HashSet::new();
for i in left..=right {
b.insert(i);
}
for r in ranges {
let start = r[0];
let end = r[1];
for i in start..=end {
if b.contains(&i) {
a.insert(i);
}
}
}
a == b
}
}
#[test]
fn test() {
let ranges = vec_vec_i32![[1, 2], [3, 4], [5, 6]];
let left = 2;
let right = 5;
let res = true;
assert_eq!(Solution::is_covered(ranges, left, right), res);
let ranges = vec_vec_i32![[1, 10], [10, 20]];
let left = 21;
let right = 21;
let res = false;
assert_eq!(Solution::is_covered(ranges, left, right), res);
}
```

Having problems with this solution? Click here to submit an issue on github.