//@ run-pass use std::mem::size_of; #[derive(PartialEq, Debug)] enum Either { Left(T), Right(U) } macro_rules! check { ($t:ty, $sz:expr, $($e:expr, $s:expr),*) => {{ assert_eq!(size_of::<$t>(), $sz); $({ static S: $t = $e; let v: $t = $e; assert_eq!(S, v); assert_eq!(format!("{:?}", v), $s); assert_eq!(format!("{:?}", S), $s); });* }} } pub fn main() { check!(Option, 2, None, "None", Some(129), "Some(129)"); check!(Option, 4, None, "None", Some(-20000), "Some(-20000)"); check!(Either, 2, Either::Left(132), "Left(132)", Either::Right(-32), "Right(-32)"); check!(Either, 4, Either::Left(132), "Left(132)", Either::Right(-20000), "Right(-20000)"); }