Rust
Unsafe Rust
Unsafe operations.
By EZ4Code Team
unsafeunsafe
Code
fn main() {
// Raw pointer
let mut num = 5;
let r1 = &num as *const i32;
let r2 = &mut num as *mut i32;
unsafe {
println!("r1 = {}", *r1);
*r2 = 10;
println!("num = {}", num);
}
// Call unsafe function
unsafe { dangerous(); }
// Access mutable static
static mut COUNTER: u32 = 0;
unsafe {
COUNTER += 1;
println!("Counter: {}", COUNTER);
}
// Implement unsafe trait
unsafe trait Foo { fn bar(&self); }
unsafe impl Foo for i32 {
fn bar(&self) { println!("bar: {}", self); }
}
unsafe { (42 as i32).bar(); }
}
unsafe fn dangerous() {
println!("unsafe function called");
}Explanation
unsafe is used for raw pointer dereferencing, calling unsafe functions, accessing mutable statics, and implementing unsafe traits.