Rust 程序设计语言 简体中文版 1.85.0通常会指定捕获其环境的闭包作为迭代器适配器 的参数。 作为一个例子,我们使用 filter 方法来获取一个闭包。该闭包从迭代器中获取一项并返回一 个 bool。如果闭包返回 true,其值将会包含在 filter 提供的新迭代器中。如果闭包返回 false,其值不会被包含。 示例 13-16 中使用 filter 和一个捕获环境中变量 shoe_size 的闭包来遍历一个 Shoe 结构体 集合。它只会返回指定鞋码的鞋子。 String, } fn shoes_in_size(shoes: Vec, shoe_size: u32) -> Vec { shoes.into_iter().filter(|s| s.size == shoe_size).collect() } #[cfg(test)] mod tests { use super::*; #[test] } } 示例 13-16:使用 filter 方法和一个捕获 shoe_size 的闭包 shoes_in_size 函数获取一个鞋子 vector 的所有权和一个鞋码作为参数。它返回一个只包含指 定鞋码的鞋子的 vector。 shoes_in_size 函数体中调用了 into_iter 来创建一个获取 vector 所有权的迭代器。接着调用 filter 将这个迭代器适配成一个只含有那些闭包返回 0 码力 | 562 页 | 3.23 MB | 25 天前3
共 1 条
- 1













