unsafe-checker
1
总安装量
1
周安装量
#53565
全站排名
安装命令
npx skills add https://github.com/lywa1998/self-host-claude-marketplace --skill unsafe-checker
Agent 安装分布
kilo
1
windsurf
1
cline
1
codex
1
github-copilot
1
Skill 文档
Unsafe Rust Checker
When Unsafe is Valid
| Use Case | Example |
|---|---|
| FFI | Calling C functions |
| Low-level abstractions | Implementing Vec, Arc |
| Performance | Measured bottleneck with safe alternative too slow |
NOT valid: Escaping borrow checker without understanding why.
Required Documentation
// SAFETY: <why this is safe>
unsafe { ... }
/// # Safety
/// <caller requirements>
pub unsafe fn dangerous() { ... }
Quick Reference
| Operation | Safety Requirements |
|---|---|
*ptr deref |
Valid, aligned, initialized |
&*ptr |
+ No aliasing violations |
transmute |
Same size, valid bit pattern |
extern "C" |
Correct signature, ABI |
static mut |
Synchronization guaranteed |
impl Send/Sync |
Actually thread-safe |
Common Errors
| Error | Fix |
|---|---|
| Null pointer deref | Check for null before deref |
| Use after free | Ensure lifetime validity |
| Data race | Add proper synchronization |
| Alignment violation | Use #[repr(C)], check alignment |
| Invalid bit pattern | Use MaybeUninit |
| Missing SAFETY comment | Add // SAFETY: |
Deprecated â Better
| Deprecated | Use Instead |
|---|---|
mem::uninitialized() |
MaybeUninit<T> |
mem::zeroed() for refs |
MaybeUninit<T> |
| Raw pointer arithmetic | NonNull<T>, ptr::add |
CString::new().unwrap().as_ptr() |
Store CString first |
static mut |
AtomicT or Mutex |
| Manual extern | bindgen |
FFI Crates
| Direction | Crate |
|---|---|
| C â Rust | bindgen |
| Rust â C | cbindgen |
| Python | PyO3 |
| Node.js | napi-rs |
Claude knows unsafe Rust. Focus on SAFETY comments and soundness.