How to Vec<T> -> (Vec<T>, Vec<T>)?

How to Vec to (Vec, Vec), v[2*a] to (v1[a], v2[a]) ?

I find slice split_at.

https://doc.rust-lang.org/std/vec/struct.Vec.html#method.split_off might help with that. You can use it to make a function like this:

fn split_in_two<T>(mut v1: Vec<T>) -> (Vec<T>, Vec<T>) {
    let split_idx = v1.len() / 2;
    let v2 = v1.split_off(split_idx);
    (v1, v2)
}

thanks