025. Rust マクロ - hpscript/Rust GitHub Wiki

マクロは一定の手順をまとめて呼び出せるようにしたもの 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);
}