rustgym 0.2.0

rustgym solutions
Documentation
struct SubrectangleQueries {
    rectangle: Vec<Vec<i32>>,
    n: usize,
    m: usize,
}

impl SubrectangleQueries {
    fn new(rectangle: Vec<Vec<i32>>) -> Self {
        let n = rectangle.len();
        let m = rectangle[0].len();
        SubrectangleQueries { rectangle, n, m }
    }

    fn update_subrectangle(&mut self, row1: i32, col1: i32, row2: i32, col2: i32, new_value: i32) {
        let r1 = row1 as usize;
        let c1 = col1 as usize;
        let r2 = row2 as usize;
        let c2 = col2 as usize;
        for i in r1..=r2 {
            for j in c1..=c2 {
                self.rectangle[i][j] = new_value;
            }
        }
    }

    fn get_value(&self, row: i32, col: i32) -> i32 {
        self.rectangle[row as usize][col as usize]
    }
}

#[test]
fn test() {
    let rectangle = vec_vec_i32![[1, 2, 1], [4, 3, 4], [3, 2, 1], [1, 1, 1]];
    let mut obj = SubrectangleQueries::new(rectangle);
    assert_eq!(obj.get_value(0, 2), 1);
    obj.update_subrectangle(0, 0, 3, 2, 5);
    assert_eq!(obj.get_value(0, 2), 5);
}