Rust 在配分函数中获取项的索引
我需要在rust中拆分一个数组/向量,并在文档中找到它。看起来传递给分区的回调函数只能访问数组的项。如何获取项目的索引Rust 在配分函数中获取项的索引,rust,Rust,我需要在rust中拆分一个数组/向量,并在文档中找到它。看起来传递给分区的回调函数只能访问数组的项。如何获取项目的索引 例如,给定一个数组[1,2,3,4],我如何根据它们的位置将其拆分为两个,这样第一个数组将是[1,3],因为它们每个都有一个偶数位置1和3的索引0和2是偶数,第二个将是[2,4]。在迭代迭代器时获取索引,您可以使用 要在迭代迭代器时获取索引,可以使用 解决方案可以是使用itertools并从中获得: use itertools::{Either, Itertools}; fn
例如,给定一个数组[1,2,3,4],我如何根据它们的位置将其拆分为两个,这样第一个数组将是[1,3],因为它们每个都有一个偶数位置1和3的索引0和2是偶数,第二个将是[2,4]。在迭代迭代器时获取索引,您可以使用
要在迭代迭代器时获取索引,可以使用
解决方案可以是使用itertools并从中获得:
use itertools::{Either, Itertools};
fn main() {
let a = vec![1, 2, 3, 4];
let (b, c): (Vec<_>, Vec<_>) = a.into_iter().enumerate().partition_map(|(i, foo)| {
if i % 2 == 0 {
Either::Left(foo)
} else {
Either::Right(foo)
}
});
println!("{:?}, {:?}", b, c);
}
解决方案可以是使用itertools并从中获得:
use itertools::{Either, Itertools};
fn main() {
let a = vec![1, 2, 3, 4];
let (b, c): (Vec<_>, Vec<_>) = a.into_iter().enumerate().partition_map(|(i, foo)| {
if i % 2 == 0 {
Either::Left(foo)
} else {
Either::Right(foo)
}
});
println!("{:?}, {:?}", b, c);
}
我不喜欢这个解决方案,如果你只坚持使用std,我会使用可变状态:或者自己实现分区映射。我不喜欢这个解决方案,如果你只坚持使用std,我会使用可变状态:或者自己实现分区映射。注释:最好将迭代器链拆分成多行,使其更简单次要注释:最好将迭代器链拆分为多行,使其更具可读性。
println!("{:?} {:?}", unenumerate(a), unenumerate(b)); // [1, 3] [2, 4]
use itertools::{Either, Itertools};
fn main() {
let a = vec![1, 2, 3, 4];
let (b, c): (Vec<_>, Vec<_>) = a.into_iter().enumerate().partition_map(|(i, foo)| {
if i % 2 == 0 {
Either::Left(foo)
} else {
Either::Right(foo)
}
});
println!("{:?}, {:?}", b, c);
}