0
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 16

Rust 関数風マクロRTA (最小構成の関数風マクロ)

Posted at

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

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

最小構成の関数風マクロ

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

cargo new --lib func_like_macro
cd func_like_macro

Cargo.toml を書き換えます。

Cargo.toml
[package]
name = "func_like_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]
pub fn m(t: S) -> S {
    t
}

動作確認します。

src/main.rs
use func_like_macro::m;

fn main() {
    m!(println!("Hello, world!"););
}
cargo run

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

まとめ・所感

あ、時間測り忘れた...w

「ただの手抜き記事じゃないか」って...?そうですよ...!

でもミニマルな技術記事も需要ってありますよね...?というわけで同じ形式を属性風マクロとderiveマクロでもやります!

0
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
0
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?