mcpField
R
rust-macros

rust-macros

github.com/pluginagentmarketplace開発118 回インストール42 週間前に更新
リポジトリ

rust-macros について

Rustの宣言的マクロ`macro_rules!`と手続き型マクロを学び、利用する開発者向けのスキルです。例、フラグメント指定子、展開ツール、トラブルシューティングを含みます。

主な機能

  1. 01宣言的マクロの例
  2. 02手続き型マクロのパターン
  3. 03フラグメント指定子のリファレンス
  4. 04cargo expandによるマクロ展開
  5. 05衛生性と定義順序のトラブルシューティング

活用シーン

  1. 01再利用可能なRust macro_rules!ヘルパーの作成
  2. 02derive手続き型マクロの構築
  3. 03デバッグ時のマクロ展開確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/pluginagentmarketplace/custom-plugin-rust --skill rust-macros

インストール後、Claude Code で/rust-macrosを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/
config.yaml
macro-example.rs
schema.json
references/
GUIDE.md
PATTERNS.md
scripts/
validate.py

詳細

Rust マクロスキル

Rust のマクロシステムをマスターしましょう。宣言的マクロ(macro_rules!)と手続き型マクロを学びます。

クイックスタート

宣言的マクロ
macro_rules! vec_of_strings {
    ($($x:expr),* $(,)?) => {
        vec![$($x.to_string()),*]
    };
}

let v = vec_of_strings!["a", "b", "c"];
フラグメント指定子
指定子一致するもの
ident識別子
expr式
ty型
patパターン
ttトークンツリー
literalリテラル
繰り返し
macro_rules! hashmap {
    ($($key:expr => $value:expr),* $(,)?) => {{
        let mut map = std::collections::HashMap::new();
        $(map.insert($key, $value);)*
        map
    }};
}

let m = hashmap! { "one" => 1, "two" => 2 };

手続き型マクロ

[lib]
proc-macro = true

[dependencies]
syn = { version = "2", features = ["full"] }
quote = "1"
Derive マクロ
use proc_macro::TokenStream;
use quote::quote;
use syn::{parse_macro_input, DeriveInput};

#[proc_macro_derive(HelloMacro)]
pub fn hello_derive(input: TokenStream) -> TokenStream {
    let input = parse_macro_input!(input as DeriveInput);
    let name = input.ident;

    quote! {
        impl HelloMacro for #name {
            fn hello() {
                println!("Hello from {}!", stringify!(#name));
            }
        }
    }.into()
}

デバッグ

cargo expand              # Expand all macros
cargo expand main         # Expand specific

トラブルシューティング

問題解決策
衛生性の問題$crate:: を使用します
順序が重要使用する前に定義します

リソース

コメント