我正在尝试使用 Rayon::prelude::into_par_iter 来总结一堆结构实例。我已经std::iter::Sum
为结构实现了,但仍然遇到错误。这是我的示例代码;
use std::iter::Sum;
use rayon::prelude::*;
pub struct TestStruct {
val: f32,
}
impl TestStruct {
pub fn new(v: f32) -> Self {
Self { val: v }
}
}
impl<'a> Sum<&'a Self> for TestStruct {
fn sum<I>(iter: I) -> Self
where
I: Iterator<Item = &'a Self>,
{
iter.fold(Self { val: 0. }, |a, b| Self {
val: a.val + b.val,
})
}
}
fn main() {
let default_val: f32 = 1.1;
let sum: TestStruct = (0..5).into_par_iter().map(|&default_val| {
TestStruct::new(default_val)
})
.sum();
println!("{}", sum.val);
}
我被告知the trait 'std::iter::Sum' is not implemented for 'TestStruct'
,但我认为我正在实施它。我在这里错过了什么吗?