rust-unsafe
unsafeコードとFFI(Foreign Function Interface)の専門家です。unsafe、生ポインタ、FFI、extern、transmute、*mut、*const、union、#[repr(C)]、libc、MaybeUninit、NonNullといった要素や、SAFETYコメント、サウンドネス、未定義動作(UB)などを扱います。安全な抽象化の設計、メモリレイアウトの最適化、未定義動作の防止といった観点から、Rustにおける低レベルプログラミングに関するアドバイスを提供します。
description の原文を見る
不安全代码与 FFI 专家。处理 unsafe, raw pointer, FFI, extern, transmute, *mut, *const, union, #[repr(C)], libc, MaybeUninit, NonNull, SAFETY comment, soundness, undefined behavior, UB, 安全抽象, 裸指针, 外部函数接口, 内存布局, 未定义行为
SKILL.md 本文
アンセーフコードと FFI
コア問題
いつ unsafe を使用でき、どのように安全に使用するのか?
unsafe は必要ですが、慎重に使用する必要があります。
unsafe を使用できるタイミング
| ユースケース | 例 | 正当性 |
|---|---|---|
| FFI で C を呼び出す | extern "C" { fn libc_malloc(size: usize) -> *mut c_void; } | ✅ |
| 底層の抽象化を実装 | Vec、Arc の内部実装 | ✅ |
| パフォーマンス最適化(計測済み) | ホットスポットコードで測定したボトルネック | ⚠️ 検証必要 |
| ボロー検査を回避する | なぜ使用するのか不明 | ❌ |
SAFETY コメント要件
すべての unsafe ブロックに SAFETY コメントを含める必要があります:
// SAFETY: ptr は null でなく、適切にアラインされている必要があります。
// この関数は null チェック後にのみ呼び出されます。
unsafe { *ptr = value; }
/// # Safety
///
/// * `ptr` は適切にアラ
...
詳細情報
- 作者
- majiayu000
- ライセンス
- unknown
- 最終更新
- 2026/5/9
Source: https://github.com/majiayu000/claude-skill-registry-data / ライセンス: unknown
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。