Open1
Rustでmax_indexを取得する
TL;DR
foldで、max値とそのindexのみ保持し続ける。
e.g. iterの値がf64の場合
fn main() {
let list: Vec<i64> = vec![1, 9, 2, 8, 3, 7, 4, 6, 5];
let (max_index, max) =
list.iter()
.enumerate()
.fold((usize::MIN, i64::MIN), |(i_a, a), (i_b, &b)| {
if b > a {
(i_b, b)
} else {
(i_a, a)
}
});
println!("max index: {:?}", max_index);
// -> max index: 1
println!("max: {:?}", max);
// -> max: 9
}
参考