[][src]Crate plutonium

Helping you make your programs less safe.

Usage

Add plutonium to your Cargo.toml:

[dependencies]
plutonium = "*"

and start calling your "safe" functions:

use plutonium::*;

fn main() {
    let x = super_safe(1.0);
    println!("{:?}", x);
    deref_null();
}

#[safe]
fn super_safe(x: f32) -> i32 {
    std::mem::transmute::<f32, i32>(x)
}

#[safe]
unsafe fn deref_null() {
    let p = &mut 0 as *mut i32;
    println!("{}", *p);
}

Roadmap:

  1. Disable #![forbid(unsafe_code)]
  2. Add #![forbid(safe_code)] proc-macro lint

Attribute Macros

safe

Turn unsafe code into "safe" code.