错误:类型不匹配:预期`usize`,找到`i64`,带有'Vec <i64>`

时间:2018-05-05 07:46:51

标签: rust type-mismatch

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 :(得分:3)

错误消息表示您无法比较iusize}类型和j(类型i64)。

为什么i输入usize?因为您在a[i]中将其用作索引。

为什么j输入i64?因为您已从n对其进行了初始化,因为i64已将其推送到Vec<i64>

为什么不能比较两者?因为在您可以使用的语言中,可以通过将usize转换为i64然后执行比较,或将i64转换为usize然后执行比较来完成。这两种方法都可能做错事。