Я пишу код в Rust (главным образом, как POC). Код принимает 2D-массив, передает его второй функции для выполнения математической математики (я знаю, что для этого есть стандартная библиотека, но я хочу привыкнуть к тому, как все работает).Назначение значений в 2D-массиве
Проблема в том, что назначение двумерного массива вызывает проблему.
Мой код выглядит следующим образом
fn main()
{
// first create a couple of arrays - these will be used
// for the vectors
let line1: [i32; 4] = [4, 2, 3, 3];
let line2: [i32; 4] = [3, 4, 5, 7];
let line3: [i32; 4] = [2, 9, 6, 2];
let line4: [i32; 4] = [5, 7, 2, 4];
// create two holding arrays and assign
let array_one = [line1, line3, line4, line2];
let array_two = [line2, line1, line3, line4];
// let's do the multiply
let result = matrix_multiply(&array_one, &array_two);
println!("{:?}", result);
}
fn matrix_multiply(vec1:&[&[i32;4];4], vec2:&[&[i32;4];4]) -> [[i32; 4];4]
{
// we need to deference the parameters passed in
let vec_one:[[i32;4];4] = vec1;
let vec_two:[[i32;4];4] = vec2;
// we need to store the sum
let mut sum = 0;
// we need to create the arrays to put the results into
let mut result = [[0i32; 4]; 4];
// loop through the two vectors
for vone in 0..4
{
for vtwo in 0..4
{
for k in 0..4
{
sum = sum + vec1[[vone].k] * vec2[[k].vtwo];
}
result[[vec_one].vec_two] = sum;
sum = 0;
}
}
return result;
}
Я также попытался result[vec_one][vec_two] = sum
, но когда я пришел к компиляции, похоже, существует проблема присвоения массива.
Что я здесь делаю неправильно?
Включите в вопрос сообщение об ошибке. – Shepmaster