どちらお大小を表現する為の型です。
std::cmp::PartialOrd
>=
が::ge
>
が::gt
<
が::lt
<=
が::le
でそれぞれの挙動を実装します。対象の Struct はstd::cmp::PartialEq
をスーパートレイトに持つ為、その内容も持っている必要があります。
#[derive(PartialEq, PartialOrd)]
struct Foo;
PartialOrd
は多分比較できる(比較できない場合がある)場合に使います。例えばf32
のNAN
同士はうまく比較できません。
std::f32::NAN >= std::f32::NAN
// false
std::cmp::Ord
こちらは必ず比較できる場合に使います。i32
にはそういった特殊な値はない為、これを持つことができます。
このトレイトはPartialOrd
をスーパートレイトとして持ちEq
も要求される為、もし実装する場合は以下のようになります。
#[derive(PartialEq, Eq, PartialOrd, Ord)]
struct Foo;