## 概要
- 同値関係は基本的に[[PartialEqトレイト]]で実装する
- [[PartialEqトレイト]]は[[Eqトレイト]]のスーパートレイト
- 反射関係(`a == a`)を満たす場合のみ[[Eqトレイト]]を実装する (大抵のケース)
- ただし実装は空。反射関係を示すだけ
- 反射関係を満たさないもの(`a != a`となる判例がある)には`f32`の`NAN`などがある
## 同値関係をderiveする場合は
- [[PartialEqトレイト]]は必ず実装する
- ほとんどのケースで[[Eqトレイト]]も実装する
- 反射関係を満たさないレアケースは[[Eqトレイト]]を実装しない
## 参考
- [PartialEq と Eq \- Rust \| nju33](https://nju33.com/notes/rust/articles/PartialEq%20%E3%81%A8%20Eq)
- [付録C:導出可能なトレイト \- The Rust Programming Language 日本語版](https://doc.rust-jp.rs/book-ja/appendix-03-derivable-traits.html#%E7%AD%89%E4%BE%A1%E6%AF%94%E8%BC%83%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AEpartialeq%E3%81%A8eq)