PartialOrd と Ord

どちらお大小を表現する為の型です。

std::cmp::PartialOrd

  • >=::ge
  • >::gt
  • <::lt
  • <=::le

でそれぞれの挙動を実装します。対象の Struct はstd::cmp::PartialEqをスーパートレイトに持つ為、その内容も持っている必要があります。

#[derive(PartialEq, PartialOrd)]
struct Foo;

PartialOrdは多分比較できる(比較できない場合がある)場合に使います。例えばf32NAN同士はうまく比較できません。

std::f32::NAN >= std::f32::NAN
// false

std::cmp::Ord

こちらは必ず比較できる場合に使います。i32にはそういった特殊な値はない為、これを持つことができます。

このトレイトはPartialOrdをスーパートレイトとして持ちEqも要求される為、もし実装する場合は以下のようになります。

#[derive(PartialEq, Eq, PartialOrd, Ord)]
struct Foo;