我已经实现了以下计算序列平均值的函数:
fn mean<T, R>(seq: &[T]) -> R
where R: Div<R, Output=R> + From<T> + From<usize> + Sum<R>
{
let total: R = seq.iter().map(|&x| R::from(x)).sum()
let size = R::from(seq.len())
total / size
}
Run Code Online (Sandbox Code Playgroud)
usize但是,我在转换从返回的值时遇到了麻烦seq.len()
let numbers = vec![10, 20, 30, 40, 50, 60];
let result: f32 = mean(&numbers);
println!("{:?}", result);
Run Code Online (Sandbox Code Playgroud)
5 | fn mean<T, R>(seq: &[T]) -> R
| ----
6 | where R: Div<R, Output=R> + From<T> + From<usize> + Sum<R>
| ----------- required by this bound in `mean`
...
15 | let result: f32 = mean(&numbers);
| ^^^^ the trait `std::convert::From<usize>` is not implemented for `f32`
Run Code Online (Sandbox Code Playgroud)
我对此感到非常困惑,因为我还是一个有特质的初学者。我该如何解决这个具体问题?(如果可以的话)