rust - 为 Vec 实现一个特征对于各种数字 T
问题描述
我想有一个特点TopK
如下:
pub trait TopK{
pub fn top_k(&self, k : size) -> Result<Vec<usize>, io::Error>;
}
我想实现这样的行为将TopK
取决于. 我对所有非浮点数有一种实现,对所有浮点数有另一种实现。Vec<T>
T
因此,我想要以下内容:
impl<T> TopK for Vec<T> where T : num_traits::PrimInt + Copy {
//Implementation where T is any non-floating point number
}
impl<T> TopK for Vec<T> where T : num_traits::Float + Copy{
//Implementation where T is any floating point number
}
这是因为浮点数只是部分排序的,所以对于浮点数,我必须为所有非 NaN 浮点数创建一个新结构,并在二进制堆中使用它们来进行 TopK 计算。
但是,尝试这样做会产生冲突的定义错误。这个问题要遵循的设计模式是什么?
解决方案
推荐阅读
- javascript - TypeScript“字符串文字”子集不能分配给重载函数中的完整集
- stata - 关于在 Stata 中通过排序后使用 tabstat 的说明
- python - 如何使用特定逻辑更新 Python 中字典的所有条目?
- python - 如何在谷歌云上部署 Splash?
- c - 根据控制器的验证向用户显示 Toast 警报
- flutter - Flutter:在堆栈中平移、旋转和缩放定位的小部件
- java - Client(Java) not connecting to server(Kotlin) Android studio, what is wrong?
- c# - 函数参数 - 如何使用预定义列表而不是字符串值
- python - Julia 代码的 Numpy where 功能?
- css - Ionic 5 - 删除 ios 全局上的 ion-back-button 文本