配列のある要素を一つ取り出して、他の全ての要素と比較して、その値を更新する。

fn main() {
    let mut v: Vec<f64> = vec![1.0, 2.0, 3.0, 4.0, 5.0];
    for xi in 0..v.len() {
        for (yi, y) in v.iter().enumerate() {
            if xi != yi {
                let mut x = &mut v[xi];
                if *x < *y {
                    *x += (*y - *x) / 2.0;
                }
                println!("{}", x);
            }
        }
    }
}

xに配列の要素をmutableで束縛したいのですが、既にyに配列の要素が束縛されているために、コンパイルエラーが発生します。このように変数を複数参照・変更したい場合はどうすれば良いのでしょうか?