Skip to content
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.

More Rust Snippets