1.9 KiB
1.9 KiB
Unsafe Checker - Section Definitions
Section Overview
| # | Section | Prefix | Level | Count | Impact |
|---|---|---|---|---|---|
| 1 | General Principles | general- |
CRITICAL | 3 | Foundational unsafe usage guidance |
| 2 | Safety Abstraction | safety- |
CRITICAL | 11 | Building sound safe APIs |
| 3 | Raw Pointers | ptr- |
HIGH | 6 | Pointer manipulation safety |
| 4 | Union | union- |
HIGH | 2 | Union type safety |
| 5 | Memory Layout | mem- |
HIGH | 6 | Data representation correctness |
| 6 | FFI | ffi- |
CRITICAL | 18 | C interoperability safety |
| 7 | I/O Safety | io- |
MEDIUM | 1 | Handle/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