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 17

Rust 属性風マクロRTA (最小構成の属性風マクロ)

Posted at

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

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

最小構成の属性風マクロ

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

cargo new --lib attr_macro
cd attr_macro

Cargo.toml を書き換えます。

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

+[lib]
+proc-macro = true

[dependencies]

src/lib.rs を書き換えます。関数風マクロの時と同様入力をそのまま出力してしまうことにします!

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

#[proc_macro_attribute]
pub fn a(_attr: S, item: S) -> S {
    item
}

動作確認します。

src/main.rs
use attr_macro::a;

#[a]
fn main() {
    println!("Hello, world!");
}
cargo run

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

まとめ・所感

記録は2分22秒ほどでした。マクロの引数について、開始前にメタとアイテムどちらが先に来るか確認しておくべきでしたね...deriveマクロではもう少し早い記録を狙いたいです!でわ

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?