Repolode
dtolnay

dtolnay/proc-macro-workshop

Rustの手続き型マクロを実装する、5つのプロジェクトからなる実践ワークショップ。各プロジェクトには雛形とtrybuildのテストスイートが用意されています。

スター
4,873
フォーク
1,216
未解決の Issue
3
最終コミット
3 か月前

これは何?

このリポジトリは、コンパイル時にRustコードを生成するRust関数である、手続き型マクロの書き方を学ぶためのワークショップです。5つのプロジェクトが含まれています。builderパターン用のderiveマクロ、フィールドごとに書式文字列を指定できるカスタマイズ可能なDebug derive、インデックス付きのコードを生成する関数風マクロseq!、ソートされていないenumバリアントをコンパイルエラーとして報告する属性マクロ#[sorted]、そして構造体のフィールドをバイト配列にパックし、getterとsetterを生成する#[bitfield]属性です。

各プロジェクトには雛形と、testsディレクトリ内のテストスイートが用意されています。テストにはtrybuildを使い、正常に展開されるケースと、コンパイルに失敗すべきコードに対するコンパイラエラーメッセージが正確に一致するかを検証します。ワークショップでは、まずderive(Builder)から始め、その後はトレイト境界、独自の入力パース、診断機能のどれを重点的に学びたいかに応じて、ほかのプロジェクトを選ぶ進め方を提案しています。

また、cargo expandの使用や、生成されたトークンストリームをstderrに出力する方法など、マクロのデバッグ手法も解説しています。

主な機能

  • 01derive、関数風、属性マクロを扱う、難易度別の5つのプロジェクト。
  • 02コンパイラエラーの出力内容まで正確に検証する、trybuildベースのテストスイート。
  • 03各プロジェクトの雛形と、段階的にテストを有効化する手順。
  • 04cargo expandやトークンストリームの出力を使ったデバッグ方法。
  • 05関心に応じた学習順序の提案。

ユースケース

  • ガイド付きの演習を通じて、Rustの手続き型マクロを初めて学ぶ。
  • ジェネリックなderiveマクロでトレイト境界を扱う練習をする。
  • Rustライブラリ向けに、独自のコンパイル時診断を実装する準備をする。
  • マクロでビットパック構造体のAPIを生成する方法を学ぶ。

クイックスタート

  1. 1

    リポジトリをクローンし、builder などのプロジェクトディレクトリに移動します

  2. 2

    そのプロジェクトのテストスイートを実行します

    cargo test

トピック

#rust#procedural-macros#metaprogramming#learning#workshop#trybuild#code-generation

よくある質問

proc-macro-workshop とは?
Rustの手続き型マクロを実装する、5つのプロジェクトからなる実践ワークショップ。各プロジェクトには雛形とtrybuildのテストスイートが用意されています。 このリポジトリは、コンパイル時にRustコードを生成するRust関数である、手続き型マクロの書き方を学ぶためのワークショップです。5つのプロジェクトが含まれています。builderパターン用のderiveマクロ、フィールドごとに書式文字列を指定できるカスタマイズ可能なDebug derive、インデックス付きのコードを生成する関数風マクロseq!、ソートされていないenumバリアントをコンパイルエラーとして報告する属性マクロ#[sorted]、そして構造体のフィールドをバイト配列にパックし、getterとsetterを生成する#[bitfield]属性です。
proc-macro-workshop は無料で使えますか?ライセンスは?
proc-macro-workshop は Apache-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
proc-macro-workshop は今もメンテナンスされていますか?
半年以内に更新あり。proc-macro-workshop の最終コミットは 2026年8月6日 です。
proc-macro-workshop は何に使えますか?
ガイド付きの演習を通じて、Rustの手続き型マクロを初めて学ぶ。 ジェネリックなderiveマクロでトレイト境界を扱う練習をする。 Rustライブラリ向けに、独自のコンパイル時診断を実装する準備をする。 マクロでビットパック構造体のAPIを生成する方法を学ぶ。
proc-macro-workshop のインストール方法は?
リポジトリをクローンし、builder などのプロジェクトディレクトリに移動します そのプロジェクトのテストスイートを実行します: cargo test
proc-macro-workshop はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/dtolnay/proc-macro-workshop

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト