ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ Google, Ρ ΠΌΠΎΠ³Ρ Π½Π°ΠΉΡΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠ°ΡΡΡ
Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Rust, Π½ΠΎ Ρ Π½Π΅ ΠΌΠΎΠ³Ρ Π½Π°ΠΉΡΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π² ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊΠ΅, Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ API Π΄Π»Ρ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ
ΡΠΈΠΏΠΎΠ² ΠΈΠ»ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ API Π΄Π»Ρ ΠΏΡΠΈΠ·Π½Π°ΠΊΠ° Div
ΠΊΠΎΡΠΎΡΡΠΉ Π³ΠΎΠ²ΠΎΡΠΈΡ ΡΡΠΎ Π±ΡΠ»ΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠ΅ΡΠ΅Π½ΠΎ. (Π Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΠΏΠΎΡ
ΠΎΠΆΠ΅, ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ, ΡΡΠΎ /
, checked_div
ΠΈ wrapping_div
ΠΌΠΎΠ³ΡΡ Π½Π΅ Π΄Π΅Π»Π°ΡΡ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅.) ΠΡΠΎ Π΅ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ±ΠΈΠ²Π°Π΅Ρ Ρ ΡΠΎΠ»ΠΊΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΌ ΡΠΈΠΏΠ°ΠΌ, ΠΊΠΎΡΠΎΡΠ°Ρ, ΠΏΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡ, ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ /
Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ Π΄Π΅Π»Π΅Π½ΠΈΡ, Π° ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π΄Π΅Π»Π΅Π½ΠΈΡ. (Π― Π½Π΅ ΠΌΠΎΠ³Ρ ΠΏΡΠΈΠ΄ΡΠΌΠ°ΡΡ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ°Π·ΡΠΌΠ½ΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΈ floor(self / other)
Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ wrapping_div
.) ΠΡΠ»ΠΎ Π±Ρ Π½Π΅ΠΏΠ»ΠΎΡ
ΠΎ, Π΅ΡΠ»ΠΈ Π±Ρ ΡΡΠΎ Π±ΡΠ»ΠΎ Π³Π΄Π΅-ΡΠΎ ΡΠ΅ΡΠΊΠΎ Π·Π°Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ Π²Π°ΡΡΠΈΡΡΠ΅ΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ·ΡΠΊΠ°ΠΌΠΈ ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½ΠΈΡ
. ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
Π½Π΅Π΄ΠΎΡΠ°Π·ΡΠΌΠ΅Π½ΠΈΠΉ Ρ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠΉ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠΎΠΉ.
http://doc.rust-lang.org/reference.html#behavior -not-connected-unsafe Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ Β«ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈΒ» ΠΈ ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΠΎΠ±Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅, Π½ΠΎ Π²Ρ ΠΏΡΠ°Π²Ρ, ΡΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π»ΡΡΡΠ΅ ΠΏΠΎΠ½ΡΡΡ ΡΡΠΎ.
@steveklabnik
Π Π΅ΡΡ ΠΈΠ΄Π΅Ρ ΠΎ ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΠΈ, Π° Π½Π΅ ΠΎΠ± ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ΅. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ LLVM sdiv
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΊΡΡΠ³Π»ΡΠ΅ΡΡΡ Π΄ΠΎ Π½ΡΠ»Ρ (ΠΈ srem
ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΡ ΠΆΠ΅ Π·Π½Π°ΠΊ, ΡΡΠΎ ΠΈ Π΄ΠΈΠ²ΠΈΠ΄Π΅Π½Π΄). ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎ (Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π΄Π»Ρ wrapping_div
Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ _lies_, ΡΡΠ²Π΅ΡΠΆΠ΄Π°Ρ, ΡΡΠΎ ΠΎΠ½Π° ΠΎΠΊΡΡΠ³Π»ΡΠ΅ΡΡΡ Π΄ΠΎ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΉ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΡΡΠΈ).
ΠΡΠΎ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ΅Π»ΠΎΠ΅ / ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ. ΠΡΠΎΡΡΠΎ ΠΏΠΎΠ΄ΡΠΌΠ°ΠΉΡΠ΅, Π΅ΡΠ»ΠΈ ΠΊΡΠΎ ΡΡΠΎ ΡΠΈΡΠ°Π΅Ρ.