arrays - 如何在iter的位置方法中访问索引?

标签 arrays lambda rust iterator

我正在尝试打印数组中的第一个数字,它的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/

相关文章:

java - 调整数组大小时出现空指针异常

javascript - 返回解析后的 json 数组的长度

arrays - 从另一个函数附加到数组?

c++ - 表示 "something callable with particular signature"的模板参数

arrays - 如何将 byte slice 段 (&[u8]) 的缓冲区转换为整数?

rust - 从Rust中的for循环返回值的最佳实践?

arrays - Powershell 从包含大量字符串的大文本文件中删除任何行

c# - 是否可以将反射与 linq to entity 一起使用?

python - 如何将模糊函数与 apply(lambda x : ) function?

rust - 如何修改作为函数参数的切片?