fn range(start: isize, stop: isize, fun : impl Fn(&isize) -> isize) -> Vec { let mut v = vec![start]; let mut temp = start; loop { temp = fun(&temp); v.push(temp.clone()); if temp < stop { break; } } v }