Rustのマクロ展開後のコードを確認する
#Rust
cargo-expandを使用する
インストール
code:sh
cargo install cargo-expand
対象のマクロ
code:chmin_max.rs
#macro_export
macro_rules! chmin {
($min: expr, $v: expr) => {
if $v < $min {
$min = $v;
true
} else {
false
}
};
}
#macro_export
macro_rules! chmax {
($max: expr, $v: expr) => {
if $v > $max {
$max = $v;
true
} else {
false
}
};
}
// マクロ展開を確認するための関数
fn expand() {
let mut a: i32 = 10;
chmin!(a, 5);
chmax!(a, 6);
}
モジュールと関数を指定してマクロを展開する
code:sh
$ cargo expand chmin_max::expand
Checking macro-study v0.1.0
Finished dev unoptimized + debuginfo target(s) in 0.61s
fn expand() {
let mut a: i32 = 10;
if 5 < a {
a = 5;
true
} else {
false
};
if 6 > a {
a = 6;
true
} else {
false
};
}