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/