首页 > 解决方案 > 找不到名为“par_iter”的方法类型

问题描述

我正在尝试使用 rayon crate 并行化以下 iter 调用

https://github.com/vishpat/stl/blob/master/src/lib.rs#L315

并用 par_iter 替换 iter 调用,但得到以下编译错误

错误[E0599]:在当前范围内没有为类型 `std::vec::Vec` 找到名为 `par_iter` 的方法
   --> src/lib.rs:221:28
    |
221 | self.triangles.par_iter().map(|triangle| triangle.calculate_normals());
    | ^^^^^^^^

我错过了什么?

标签: rustrayon

解决方案


您可能已经知道rayon crate 必须添加Cargo.toml并声明到lib.rs.

然后将前奏添加到您的mod parser,而不是根箱中:

pub mod parser {

    use std::fs::File;
    use std::io::Read;
    use std;
    use rayon::prelude::*;

最后,你有一个可变迭代器,使用par_iter_mut

    model.triangles.par_iter_mut().for_each(|triangle| triangle.calculate_normal());

推荐阅读