1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Rustマクロ冬期講習Advent Calendar 2024

Day 18

Rust deriveマクロRTA (最小構成のderiveマクロ)

Posted at

こちらの記事は Rustマクロ冬期講習アドベントカレンダー 18日目の記事です!

属性風マクロはRustの手続きマクロの一種です。では作っていきます。

最小構成のderiveマクロ

ライブラリクレートを作成します。

cargo new --lib derive_macro
cd derive_macro

Cargo.toml を書き換えます。

Cargo.toml
[package]
name = "derive_macro"
version = "0.1.0"
edition = "2021"

[lib]
proc-macro = true

[dependencies]

src/lib.rs を書き換えます。deriveマクロは 追記する マクロで入力の構造体/列挙体を食わないので、空のトークンストリームを吐くことにします。

src/lib.rs
use proc_macro::TokenStream as S;

#[proc_macro_derive(D)]
pub fn d(_: S) -> S {
    S::new()
}

動作確認します。

src/main.rs
use derive_macro::D;

#[derive(D)]
struct S;

fn main() {}
cargo run

無事にコンパイルされたところでタイマーストップ。

まとめ・所感

記録は1分46秒10でした。事前に書き方を予習できたのが良かったですね。

...というわけでRTAとかいう冗談は今回までにして、次回以降はもう少しだけちゃんとそれぞれのマクロについて取り組みたいと思います!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?