3 ms·
Is it the case that "unsafe" tells the compiler to not perform its memory safety checks on that section of code, presumably because it's not possible? (What wo
by corn_dog 9y ago
Is it the case that "unsafe" tells the compiler to not perform its memory safety checks on that section of code, presumably because it's not possible? (What would happen if you put only code that could be verified by the compiler in an unsafe block?)
If so couldn't you also think of it as a message for the next programmer who looks at the code? This section has not/cannot be verified by the compiler, approach with care/skepticism?
- johncolanduoni 9y agoNo, if you call a safe function that does memory checks (like accessing a Vec by index) in an unsafe block the compiler still emits checks. You need to explicitly call the unsafe versions of those operations to remove the check.
- steveklabnik 9y ago> Is it the case that "unsafe" tells the compiler to not perform its memory safety checks on that section of code, So, unsafe Rust is a superset of safe Rust. Adding `unsafe` around some code lets you do four things: * Dereferencing a raw pointer * Calling an unsafe function or method * Accessing or modifying a mutable static variable * Implementing an unsafe trait That's it. Nothing else changes, you get these additional abilities. This is very important, conceptually. Tons of other checks are still on, etc. With that in mind, > (What would happen if you put only code that could be verified by the compiler in an unsafe block?) It would function identically.