マクロを使う上でのアドバイス
「コードを 抽象化 できる唯一の方法である場合はマクロを使おう」 可読性 を損なわないために、通常のコードに近い見た目にするか、全く異なる見た目にしよう 具体的には、
「暗黙的に参照を挿入することは避けよう」
my_macro!(list) よりも my_macro!(&list) の方が Rust のコードスタイルに合っている
「マクロの中に閉じない制御フローをマクロで使うのは避けよう」
e.g. break や return
また、「構造体の各フィールドや enum のバリアントに対してコードを生成する場合、derive マクロ を使おう」 ただし、derive マクロを追加する場合でも、「外部クレートが同じ機能のマクロを提供していないか探そう」
e.g. 整数値を C の enum のバリアントに変換するクレート C の enum のバリアント
code:c
enum Color {
Red = 0,
Green = 1,
Blue = 2
};
code:rs
enum Color {
Red = 0,
Green = 1,
Blue = 2,
}