Maverick Rust Unsafe

Rust unsafe code, FFI, and safety invariants Use when this capability is needed.

tomevault-io Updated

File contents

Rust Unsafe Skill

When to Use Unsafe

  • FFI with C libraries
  • Raw pointers for performance
  • Type transmutation (rare, dangerous)
  • Unsafe trait implementations

Safety Documentation

/// SAFETY: The slice is guaranteed to be non-empty by the caller.
/// This is enforced by the type system via NonEmptySlice.
unsafe fn get_first_unchecked(slice: &[i32]) -> i32 {
    debug_assert!(!slice.is_empty());
    *slice.get_unchecked(0)
}

Avoid Unsafe When Possible

// BAD - unjustified unsafe
unsafe fn get_first(slice: &[i32]) -> i32 {
    *slice.get_unchecked(0)
}

// GOOD - safe alternative
fn get_first(slice: &[i32]) -> Option<&i32> {
    slice.first()
}

Review Severity

  • CRITICAL: Unsafe without justification, potential undefined behavior
  • MAJOR: Missing safety documentation, unsafe could be safe
  • MINOR: Debug assertions missing in unsafe code

Converted and distributed by TomeVault — claim your Tome and manage your conversions.

tomevault-io/skills-registry/tree/main/get2knowio--maverick--maverick-rust-unsafe commit 1372955a7e

Frequently asked questions

npx skillmds@latest add tomevault-io/maverick-rust-unsafe