Unsafe Checker - Section Definitions

2026-08-30 浏览 (1)

Unsafe Checker - Section Definitions

Section Overview

#SectionPrefixLevelCountImpact
1General Principlesgeneral-CRITICAL3Foundational unsafe usage guidance
2Safety Abstractionsafety-CRITICAL11Building sound safe APIs
3Raw Pointersptr-HIGH6Pointer manipulation safety
4Unionunion-HIGH2Union type safety
5Memory Layoutmem-HIGH6Data representation correctness
6FFIffi-CRITICAL18C interoperability safety
7I/O Safetyio-MEDIUM1Handle/resource safety

Section Details

1. General Principles (general-)

Focus: When and why to use unsafe

  • P.UNS.01: Don't abuse unsafe to escape borrow checker
  • P.UNS.02: Don't use unsafe blindly for performance
  • G.UNS.01: Don't create aliases for "unsafe" named items

2. Safety Abstraction (safety-)

Focus: Building sound safe abstractions over unsafe code

Key invariants:

  • Panic safety
  • Memory initialization
  • Send/Sync correctness
  • API soundness

3. Raw Pointers (ptr-)

Focus: Safe pointer manipulation patterns

  • Aliasing rules
  • Alignment requirements
  • Null/dangling prevention
  • Type casting

4. Union (union-)

Focus: Safe union usage (primarily for C interop)

  • Initialization rules
  • Lifetime considerations
  • Type punning dangers

5. Memory Layout (mem-)

Focus: Correct data representation

  • #[repr(C)] usage
  • Alignment and padding
  • Uninitialized memory
  • Cross-process memory

6. FFI (ffi-)

Focus: Safe C interoperability

Subcategories:

  • String handling (CString, CStr)
  • Type compatibility
  • Error handling across FFI
  • Thread safety
  • Resource management

7. I/O Safety (io-)

Focus: Handle and resource ownership

  • Raw file descriptor safety
  • Handle validity guarantees

你可能感兴趣的文章

Do Not Expose Raw Pointers in Public APIs

Unsafe Code Authors Must Verify Safety Invariants

Ensure Consistent Data Layout for Custom Types

Add Safety Section in Docs for Public Unsafe Functions

Do Not Use Union Variants Across Different Lifetimes

Use MaybeUninit for Uninitialized Memory

Ensure C-ABI Compatibility for Strings Between Rust and C

Do Not Dereference Pointers Cast to Misaligned Types

Use Dedicated Opaque Type Pointers Instead of c_void for C Opaque Types

Choose Appropriate Data Layout for Struct/Tuple/Enum

  • 所属分类: AI
  • 本文标签: rust
  • 版权声明: 本文链接 https://seaxiang.com/blog/UzJqbaQg