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;
}

我无法修复 rust 中的类型不匹配,错误说:

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

最佳答案

错误消息是说您不能比较i(类型usize)和j(类型i64)。

为什么i类型为usize?因为您正在将它用作a[i]中的索引。

为什么j类型为i64?因为您已经从n初始化了它,所以类型为i64,因为它被推送到Vec<i64>中。

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

关于rust - 错误: type mismatch: expected `usize` ,发现 `i64`与 `Vec<i64>`,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50187031/

10-12 20:09