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