我正在尝试打印数组中的第一个数字,它的1
不完全大于前一个数字(在以下示例中,预期结果是7
)。
我写了&n > 0 &&
以避免检查第一个数字之前的(不存在)数字。
fn main() {
let numbers = [4, 5, 7];
let result = numbers.iter().position(|&n| &n > 0 && n != numbers[&n - 1] + 1);
println!("{:?}", result);
}
我收到有关0
的此编译器错误:expected reference, found integer
help: consider borrowing here:
&0
基本上,我正在尝试执行此JavaScript的操作:
numbers.find((n, i) => i && n != numbers[i - 1] + 1);
有人可以告诉我我在做什么错吗?我假设
n
是值,而&n
是索引。如果那是不正确的,那我如何在兰巴内部获取索引呢?
最佳答案
在 windows(2)
iterator切片中查看每对两个连续项的另一种方法:
fn find_non_consecutive(a: &[i32]) -> Option<i32> {
a.windows(2).find(|x| x[0] + 1 != x[1]).map(|x| x[1])
}
关于arrays - 如何在iter的位置方法中访问索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63332856/