小编nic*_*nii的帖子

这个 Rust 函数返回的迭代器类型是什么?

所以我在这里有这个示例代码:

use std::iter::Filter;
use std::slice::Iter;

fn main() {
    let numbers = vec![12i32, 26, 31, 56, 33, 16, 81];

    for number in ends_in_six(numbers) {
        println!("{}", number);
    }
}

fn ends_in_six(numbers: Vec<i32>) /* -> ??? */ {
    numbers.iter().filter(|&n| *n % 10 == 6)
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试返回一个迭代器,从我收集到的内容来看,它在 Rust 中一直很麻烦。在这里运行代码给了我这个错误:

<anon>:13:5: 13:45 error: mismatched types:
 expected `()`,
    found `core::iter::Filter<core::slice::Iter<'_, i32>, [closure <anon>:13:27: 13:44]>`
(expected (),
    found struct `core::iter::Filter`) [E0308]
<anon>:13     numbers.iter().filter(|&n| *n % 10 == 6)
              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)

现在,解决这个问题(并且基于我对这一切如何运作的相对有限的知识),似乎我应该做一些类似的事情:

fn ends_in_six<'a>(numbers: Vec<i32>) -> Filter<Iter<'a, …
Run Code Online (Sandbox Code Playgroud)

types iterator type-inference return-type rust

5
推荐指数
1
解决办法
1094
查看次数

标签 统计

iterator ×1

return-type ×1

rust ×1

type-inference ×1

types ×1