В сообщении об ошибке говорится, что нельзя сравнивать i
(тип usize
) и j
(тип i64
).
Почему i
тип usize
? Потому что вы используете его как индекс в a[i]
.
Почему j
тип i64
? Потому что вы инициализировали его из n
, который имеет тип i64
, потому что он помещается в Vec<i64>
.
Почему вы не можете сравнить их? Потому что на языках, где это возможно, это можно сделать либо преобразованием usize
в i64
и последующим выполнением сравнения, либо преобразованием i64
в usize
и последующим выполнением сравнения. Оба подхода могут сделать что-то не так.