rustgym 0.2.0

rustgym solutions
Documentation
struct Solution;

impl Solution {
    fn max_dist_to_closest(seats: Vec<i32>) -> i32 {
        let mut first: Option<usize> = None;
        let mut last: Option<usize> = None;
        let mut prev: Option<usize> = None;
        let n = seats.len();
        let mut max = 0;
        for i in 0..n {
            if seats[i] == 1 {
                if first.is_none() {
                    first = Some(i);
                }
                if let Some(j) = prev {
                    max = usize::max((i - j) / 2, max);
                }
                prev = Some(i);
                last = Some(i);
            }
        }
        max = usize::max(first.unwrap(), max);
        max = usize::max(n - 1 - last.unwrap(), max);
        max as i32
    }
}

#[test]
fn test() {
    let seats = vec![1, 0, 0, 0, 1, 0, 1];
    assert_eq!(Solution::max_dist_to_closest(seats), 2);
    let seats = vec![1, 0, 0, 0];
    assert_eq!(Solution::max_dist_to_closest(seats), 3);
}