I want a min()
method for f32
, u32
and i32
, so I created a trait Min
:
trait Min {
fn min(v1: Self, v2: Self) -> Self;
}
impl<T> Min for T where T: Ord {
fn min(v1: Self, v2: Self) -> Self {
::std::cmp::min(v1, v2)
}
}
impl Min for f32 {
fn min(v1: Self, v2: Self) -> Self {
v1.min(v2)
}
}
I get an error:
error[E0119]: conflicting implementations of trait `Min` for type `f32`:
--> src/main.rs:11:1
|
5 | / impl<T> Min for T where T: Ord {
6 | | fn min(v1: Self, v2: Self) -> Self {
7 | | ::std::cmp::min(v1, v2)
8 | | }
9 | | }
| |_- first implementation here
10 |
11 | / impl Min for f32 {
12 | | fn min(v1: Self, v2: Self) -> Self {
13 | | v1.min(v2)
14 | | }
15 | | }
| |_^ conflicting implementation for `f32`
According to the Rust standard library documentation, f32
does not implement Ord
. Why there are conflicting implementations?
f32
only implementsPartialOrd
– Laurence