どちらお大小を表現する為の型です。
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
// falsestd::cmp::Ord
こちらは必ず比較できる場合に使います。i32にはそういった特殊な値はない為、これを持つことができます。
このトレイトはPartialOrdをスーパートレイトとして持ちEqも要求される為、もし実装する場合は以下のようになります。
#[derive(PartialEq, Eq, PartialOrd, Ord)]
struct Foo;