マクロは一定の手順をまとめて呼び出せるようにしたもの
print!(), println!(), format!(), vec!()のように最後に!が付けられている
macro_rules! name {
(var: disanator) => {rep}
}
disanatorは一致されるものの種類
disanatorに指定できる指定子
block, expr, ident, itemm, meta, pat, path, stmt, tt, ty
macro_rules! twice { ($x:expr) => { $x * 2 } } fn main() { let n = 8; println!("{}の2倍は={}", n, twice!(n)); }
struct Point { x: i32, y: i32, } macro_rules! print_type { ($t:ty) => (println!("{:?}", stringify!($t))) } fn main() { print_type!(i32); print_type!(i64); print_type!(usize); print_type!(Point); }