Rust マクロ

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