ошибка: несоответствие типов: ожидается `usize`, найдено` i64` с `Vec <i64>` - PullRequest
0 голосов
/ 05 мая 2018
fn main() {
    let mut a: Vec<i64> = Vec::new();

    let n = 42;
    a.push(n);

    let i = 0;
    a[i];

    let j = n;

    i == j;
}

Я не могу исправить несоответствие типов в ржавчине, ошибка говорит:

error[E0308]: mismatched types
 --> src/main.rs:4:10
  |
4 |     i == j;
  |          ^ expected usize, found i64

1 Ответ

0 голосов
/ 05 мая 2018

В сообщении об ошибке говорится, что нельзя сравнивать i (тип usize) и j (тип i64).

Почему i тип usize? Потому что вы используете его как индекс в a[i].

Почему j тип i64? Потому что вы инициализировали его из n, который имеет тип i64, потому что он помещается в Vec<i64>.

Почему вы не можете сравнить их? Потому что на языках, где это возможно, это можно сделать либо преобразованием usize в i64 и последующим выполнением сравнения, либо преобразованием i64 в usize и последующим выполнением сравнения. Оба подхода могут сделать что-то не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...