fn mean<T>(array:&Vec<T>)->T
where T:Default+Copy+std::ops::AddAssign
{
let mut result:T=Default::default();
for i in array{
result+=*i;
}
result/array.len()
}
最后返回值变为一个泛型与usize的除法,这里我不知道怎么解决,大家有什么解决方案吗?
1
共 7 条评论, 1 页
评论区
写评论谢谢各位大佬的解答
f64没实现对usize的除法,而且usize本身也into不到任何基本的数字和浮点数类型,你要实在想这么搞可以不过估计没有完美的解决方案
--
👇
17863963452: ```rust let array:Vec=vec![1.0,2.0,3.0,4.0]; println!("{}",mean(&array)); 谢谢大佬,请问调用这个函数说no implementation for
f64 / usize
怎么解决?谢谢 let a=[1,2,3]; 也可以,不知道为什么形参需要数组的引用,实参用vector的引用也可以
--
👇
Bai-Jinlin: 你这个例子不建议参数用Vec,直接[T]就好了。
你这个例子不建议参数用Vec,直接[T]就好了。
你的返回结果
T
用到了/
,所以需要实现 traitDiv
而你的返回结果需要的是
T / usize -> usize
, 所以你需要加一个限定Div<usize, Output = T>