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>