我需要在一个字符串向量中找到一个元素的索引。目前我有以下代码:
fn main() {
let test: Vec<String> = vec![
"one".to_string(),
"two".to_string(),
"three".to_string(),
"four".to_string(),
];
let index: i32 = test
.iter()
.enumerate()
.find(|&r| r.1.to_string() == "two".to_string())
.unwrap()
.0;
}
它会产生一个错误:
error[E0308]: mismatched types
--> src/main.rs:9:22
|
9 | let index: i32 = test
| ______________________^
10 | | .iter()
11 | | .enumerate()
12 | | .find(|&r| r.1.to_string() == "two".to_string())
13 | | .unwrap()
14 | | .0;
| |__________^ expected i32, found usize
我认为这是因为enumerate()
返回一个元组(usize, _)
(如果我错了请纠正),但是在这里该如何将usize
转换为i32
?如果有更好的方法,我也愿意听取建议。
|r| *r == target
或者我得到了“无法移动共享引用”的错误信息。 - Russo