fn sum<T: Add<Output=T> + Copy>(list: &[T]) -> T {
if list.len() == 0 {
0
} else {
list[0] + sum(&list[1..])
}
}
在if
条件中返回的0
和函数返回的T
类型不匹配,请问大佬们这个不加参数可以解决吗?
1
共 3 条评论, 1 页
fn sum<T: Add<Output=T> + Copy>(list: &[T]) -> T {
if list.len() == 0 {
0
} else {
list[0] + sum(&list[1..])
}
}
在if
条件中返回的0
和函数返回的T
类型不匹配,请问大佬们这个不加参数可以解决吗?
评论区
写评论如果限定数字的话,可以看看num-traits这个库
谢谢大佬👍
--
👇
w: 可以补一个泛型限定。
原代码之所以不通过的原因是只要某个类型实现了
ADD
和Copy
就可以被接收。而实现这两个trait的类型不一定是数字类型,有可能是结构体,元组。可以补一个泛型限定。
原代码之所以不通过的原因是只要某个类型实现了
ADD
和Copy
就可以被接收。而实现这两个trait的类型不一定是数字类型,有可能是结构体,元组。