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
答案 0 :(得分:3)
错误消息表示您无法比较i
(usize
}类型和j
(类型i64
)。
为什么i
输入usize
?因为您在a[i]
中将其用作索引。
为什么j
输入i64
?因为您已从n
对其进行了初始化,因为i64
已将其推送到Vec<i64>
。
为什么不能比较两者?因为在您可以使用的语言中,可以通过将usize
转换为i64
然后执行比较,或将i64
转换为usize
然后执行比较来完成。这两种方法都可能做错事。