[][src]Crate plutonium

Helping you make your programs less safe.

You can learn more about plutonium at the Rust Security Advisory Database.

Usage

Add plutonium to your Cargo.toml:

[dependencies]
plutonium = "*"

and go:

use plutonium::safe;

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

#[safe]
unsafe fn deref_null() {
    *std::ptr::null::<u8>();
}

println!("{:?}", super_safe(1.0));
deref_null();

Roadmap:

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

Macros

optimize

Apply extreme optimizations to your code (requires Rust 1.45 or later).

Attribute Macros

fallout

Fallthrough match arms

safe

Turn unsafe code into "safe" code.

unby

Imbue values with interesting properties.