3 ms·
this pretty much summarises my opinion - one nitpick - i assume you meant "omit bounds and other checks", not "emit bounds and other checks" which seems to mean
by chaeronanaut 4y ago
this pretty much summarises my opinion - one nitpick - i assume you meant "omit bounds and other checks", not "emit bounds and other checks" which seems to mean the opposite of what you're intending
- woodruffw 4y agoYes, thank you! That's an embarrassing typo! (And thanks to the other person as well, who presumably deleted the same comment after seeing yours.)
- zozbot234 4y agoRust does emit bounds and other checks, though. Optimization passes can usually clear some of them away, but you'd need to check the assembly output to be sure.
- kitd 4y agoYes, that's "omit". "Emit" means "to send out", eg "emit a strange noise", "emit radiation".
- Shish2k 4y agoIt is specifically both: - trying to access an arbitrary element in a slice, the compiler will emit bounds checks (`if index > len: panic()`) to avoid an uncontrolled out-of-bounds memory access — https://godbolt.org/z/cbY5ebzvK https://godbolt.org/z/cbY5ebzvK (note how if you comment out the assert, the code barely changes, because the compiler is adding an invisible assert of its own) - if the compiler can infer that `index` will always be less than `len`, then it will omit the bounds check — https://godbolt.org/z/TTashYnjd https://godbolt.org/z/TTashYnjd