3
[[f64; 4]; 4]
と定義されている行列(多次元固定サイズ配列)を使用すると、2つの値を入れ替えることはできますか? Rustの多次元配列から値を入れ替えるには?
std::mem::swap(&mut matrix[i][k], &mut matrix[k][l]);
はエラーを与える:次に使用
macro_rules! swap_value {
($a_ref:expr, $b_ref:expr) => {
{
let t = *$a_ref;
*$a_ref = *$b_ref;
*$b_ref = t;
}
}
}
:私はこれを実現する方法を見つけ出すことができる唯一の方法は、一時値、例えばを使用していた
error[E0499]: cannot borrow `matrix[..][..]` as mutable more than once at a time
--> math_matrix.rs:100
|
100 | std::mem::swap(&mut matrix[i][j], &mut matrix[k][l]);
| ------------ ^^^^^^^^^^^^^^^- first borrow ends here
| | |
| | second mutable borrow occurs here
| first mutable borrow occurs here
:
swap_value!(&mut matrix[i][k], &mut matrix[maxj][k]);
もっと良い選択肢はありますか?
外層が分割後に「y」で0でインデックス付けされていることを強調します。作るのは簡単な誤りです。 –