rustgym 0.2.0

rustgym solutions
Documentation
use std::collections::HashMap;
struct OrderedStream {
    ptr: i32,
    pairs: HashMap<i32, String>,
    n: i32,
}

impl OrderedStream {
    fn new(n: i32) -> Self {
        let pairs = HashMap::new();
        let ptr = 1;
        OrderedStream{ptr, pairs, n}
    }
    
    fn insert(&mut self, id: i32, value: String) -> Vec<String> {
        self.pairs.insert(id, value);
        let mut res = vec![];
        if self.ptr == id {
            for i in id..=self.n {
                if let Some(v) = self.pairs.get(&i) {
                    res.push(v.to_string());
                    self.ptr += 1;
                }else{
                    break;
                }
            }
        }
        res
    }
}

#[test]
fn test() {
    let mut obj = OrderedStream::new(5);
    assert_eq!(obj.insert(3, "ccccc".to_string()), vec_string![]);
    assert_eq!(obj.insert(1, "aaaaa".to_string()), vec_string!["aaaaa"]);
    assert_eq!(obj.insert(2, "bbbbb".to_string()), vec_string!["bbbbb", "ccccc"]);
    assert_eq!(obj.insert(5, "eeeee".to_string()), vec_string![]);
    assert_eq!(obj.insert(4, "ddddd".to_string()), vec_string!["ddddd", "eeeee"]);
}