1
2
3
4
5
6
7
8
9
10
11
12
13
pub mod random;
pub mod sync;

pub fn current_time() -> u64 {
    (instant::now() / 1000.0) as u64
}

pub fn transpose<T>(v: Vec<Vec<T>>) -> Vec<Vec<T>> {
    assert!(!v.is_empty());
    let len = v[0].len();
    let mut iters: Vec<_> = v.into_iter().map(|n| n.into_iter()).collect();
    (0..len).map(|_| iters.iter_mut().filter_map(|n| n.next()).collect::<Vec<T>>()).collect()
}