🛠️ 開発・MCP コミュニティ
coding-rust
Rust: ownership/borrowing/lifetimes, traits, tokio async, anyhow/thiserror, cargo workspaces, unsafe
⚡ おすすめ: コマンド1行でインストール(60秒)
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o coding-rust.zip https://jpskill.com/download/22091.zip && unzip -o coding-rust.zip && rm coding-rust.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/22091.zip -OutFile "$d\coding-rust.zip"; Expand-Archive "$d\coding-rust.zip" -DestinationPath $d -Force; ri "$d\coding-rust.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
coding-rust.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
coding-rustフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Claude が読む原文 SKILL.md(中身を展開)
この本文は AI(Claude)が読むための原文(英語または中国語)です。日本語訳は順次追加中。
coding-rust
Purpose
This skill provides expertise in advanced Rust programming, focusing on core language features and ecosystem tools to build efficient, safe systems code.
When to Use
- When implementing memory-safe code with ownership, borrowing, or lifetimes to prevent common errors like data races.
- For projects requiring asynchronous programming with Tokio, error handling via anyhow/thiserror, or managing multi-crate setups with Cargo workspaces.
- In scenarios involving unsafe code for performance-critical sections, or defining custom behaviors with traits.
Key Capabilities
- Manage Rust's ownership model: Use references (&T) and lifetimes ('a) to borrow data without transferring ownership.
- Implement traits: Define and use trait objects for polymorphism, e.g.,
trait Debug { fn fmt(&self); }. - Handle async with Tokio: Run asynchronous tasks using
tokio::mainand futures. - Error management: Leverage anyhow for simple error wrapping and thiserror for custom error types.
- Cargo workspaces: Organize multi-package projects with
Cargo.tomlworkspaces for dependency sharing. - Unsafe operations: Use unsafe blocks for raw pointers or FFI, ensuring safety invariants are maintained.
Usage Patterns
- To handle ownership and borrowing, always prefer borrowing over cloning: Use
&mut Tfor mutable references and ensure lifetimes match, e.g., in functions likefn borrow lifetimes<'a>(x: &'a i32) -> &'a i32. - For async tasks, spawn Tokio runtimes: Use
tokio::spawnto run futures concurrently, then await results in an async main function. - Define traits for extensibility: Create a trait and implement it for structs, e.g.,
impl MyTrait for MyStruct { fn method() { ... } }. - Set up Cargo workspaces: In the root
Cargo.toml, add[workspace]section withmembers = ["crate1", "crate2"], then build withcargo build --workspace. - Use anyhow for errors: Wrap errors with
anyhow::Resultand propagate them using?operator. - Employ unsafe sparingly: Wrap unsafe code in blocks like
unsafe { *ptr = value; }and justify with comments.
Common Commands/API
- Cargo commands: Build with
cargo build --releasefor optimized binaries; test withcargo test --workspacefor all crates; add dependencies viacargo add tokio --features full. - Tokio API: Start an async runtime with
#[tokio::main] async fn main() { tokio::spawn(async { ... }); }; use channels for async communication, e.g.,let (tx, rx) = tokio::sync::mpsc::channel(10);. - Anyhow/thiserror: Define custom errors with
#[derive(thiserror::Error)] enum MyError { ... }; handle in functions asfn example() -> anyhow::Result<()> { ... }. - Ownership helpers: Use standard library functions like
std::mem::dropto explicitly drop values, orstd::borrow::Cowfor owned/copied data. - Config formats: Edit
Cargo.tomlfor project settings, e.g.,[dependencies] tokio = { version = "1.0", features = ["full"] }; use environment variables for secrets likeRUST_BACKTRACE=1for debugging.
Integration Notes
- Integrate with other tools: Use
$RUSTUP_TOOLCHAINenv var to switch Rust versions, e.g.,export RUSTUP_TOOLCHAIN=nightlyfor unstable features. - For API keys in external integrations (e.g., if calling external services from Rust), set env vars like
$MY_API_KEYand access viastd::env::var("MY_API_KEY").unwrap(). - Combine with build tools: In CI/CD, run
cargo fmtfor code formatting andcargo clippyfor lints before builds. - Embed in projects: Add Tokio as a dependency in
Cargo.toml, then import in code withuse tokio::runtime::Runtime; let rt = Runtime::new().unwrap(); rt.block_on(async { ... });. - Handle cross-crate dependencies in workspaces: Reference crates via paths, e.g., in
Cargo.toml, usepath = "../sibling_crate".
Error Handling
- Use anyhow for quick error propagation: Return
anyhow::Result<T>from functions and use?to handle errors, e.g.,fn read_file() -> anyhow::Result<String> { std::fs::read_to_string("file.txt").context("Failed to read") }. - Define custom errors with thiserror: Derive errors like
#[derive(thiserror::Error, Debug)] enum AppError { #[error("IO error: {0}")] Io(#[from] std::io::Error), }and handle with match statements. - In async contexts, use Tokio's error types: Await futures and handle errors with
.await.map_err(|e| anyhow::Error::from(e)). - Always check for panics in unsafe code: Use
std::panic::catch_unwindaround unsafe blocks to prevent crashes.
Concrete Usage Examples
- Async HTTP server with Tokio: Create a simple server by adding Tokio to
Cargo.toml, then write:use tokio::net::TcpListener; #[tokio::main] async fn main() -> anyhow::Result<()> { let listener = TcpListener::bind("127.0.0.1:8080").await?; loop { let (socket, _) = listener.accept().await?; tokio::spawn(handle_connection(socket)); } }. - Error handling in a CLI tool: Define errors and use anyhow: In
Cargo.toml, addanyhow = "1.0"andthiserror = "1.0", then implement:use thiserror::Error; #[derive(Error, Debug)] enum Error { #[error("Parse error")] Parse, } fn main() -> anyhow::Result<()> { let input = std::env::args().nth(1)?; if input.parse::<u32>().is_err() { Err(Error::Parse)?; } Ok(()) }.
Graph Relationships
- Related to: coding (cluster), as it shares tags like "coding" and focuses on programming skills.
- Connected via: tags ["rust", "systems"], potentially linking to other Rust or systems programming skills.
- Dependencies: May integrate with skills in "coding" cluster, such as general coding tools for broader ecosystem support.