我需要在字符串向量中找到元素的索引.这是我到目前为止所得到的:
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;
}
Run Code Online (Sandbox Code Playgroud)
它会产生错误:
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
Run Code Online (Sandbox Code Playgroud)
我认为这是因为enumerate()返回一个元组(usize, _)(如果我错了,请纠正我),但是如何转换usize到i32这里?如果有更好的方法,我愿意接受建议.
Mat*_*vid 59
我认为你应该看看这个position方法.
fn main() {
let test = vec!["one", "two", "three"];
let index = test.iter().position(|&r| r == "two").unwrap();
println!("{}", index);
}
Run Code Online (Sandbox Code Playgroud)
你可以在这里测试一下.
请注意,这适用于任何迭代器,因此它可以用于向量,数组和切片,所有这些都会生成迭代器.
| 归档时间: |
|
| 查看次数: |
27494 次 |
| 最近记录: |