How to define mutual recursion with closures?
问题 I can do something like this: fn func() -> (Vec<i32>, Vec<i32>) { let mut u = vec![0;5]; let mut v = vec![0;5]; fn foo(u: &mut [i32], v: &mut [i32], i: usize, j: usize) { for k in i+1..u.len() { u[k] += 1; bar(u, v, k, j); } } fn bar(u: &mut [i32], v: &mut [i32], i: usize, j: usize) { for k in j+1..v.len() { v[k] += 1; foo(u, v, i, k); } } foo(&mut u, &mut v, 0, 0); (u,v) } fn main() { let (u,v) = func(); println!("{:?}", u); println!("{:?}", v); } but I would prefer to do something like this