Googleを使用すると、Rustで整数除法がどのように機能するかについて多くの古い議論を見つけることができますが、リファレンス、整数型のAPIドキュメント、またはDiv
特性のAPIドキュメントには何も見つかりません。実際に決定されたもの。 (そして、ドキュメントは、 /
、 checked_div
、およびwrapping_div
がすべて同じことをするわけではないことを示唆しているようです。)これは、整数型のドキュメントによってさらに混乱しているようです。 /
は整数除算を指し、場合によっては数学除算を指します。 ( wrapping_div
ドキュメントでfloor(self / other)
他の合理的な解釈を思い付くことができません。)これは言語によって異なり、1つであるため、これがどこかに明確に文書化されていると便利です。整数演算との主な混乱の。
http://doc.rust-lang.org/reference.html#behavior -not-considered-unsafeは、「オーバーフロー」について説明し、ラッピングについて言及していますが、これをより適切に表面化できることは間違いありません。
@steveklabnik
これは丸めではなく、丸めに関するものです。 LLVMのsdiv
を使用します。これはゼロに向かって丸められます(そしてsrem
は配当と同じ符号を持ちます)。 これを文書化する必要があります( wrapping_div
の文書化は、現在_lies_であり、負の無限大に向かって丸められると主張しています)。
整数/整数が常に必要であるとは限らず、偶然に発生するため、これも警告を残す必要があります。 誰かがこれを読んでいるのなら、ただ考えてみてください。