当我想在整数和浮点数上调用min时,我该怎么办?例如,考虑一下:
fn foo<T>(v1: T, v2: T)
where ???
{
....
let new_min = min(v1, v2);
....
}
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
创建自己的特征,定义各种类型的行为:
trait Min {
fn min(self, other: Self) -> Self;
}
impl Min for u8 {
fn min(self, other: u8) -> u8 { ::std::cmp::min(self, other) }
}
impl Min for f32 {
fn min(self, other: f32) -> f32 { f32::min(self, other) }
}
fn foo<T>(v1: T, v2: T)
where T: Min
{
let new_min = Min::min(v1, v2);
}
Run Code Online (Sandbox Code Playgroud)
对于应该是什么结果没有人回答min(NaN, 0.0),所以由你来决定.如果您认为NaN小于或大于所有其他数字,那太好了!也许它等于零!也许你应该声称永远不会有NaN......