Skip to content

Instantly share code, notes, and snippets.

@nvzqz
Last active December 5, 2017 06:36
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nvzqz/f3de36b61b277ab789314710c1f0b150 to your computer and use it in GitHub Desktop.
Save nvzqz/f3de36b61b277ab789314710c1f0b150 to your computer and use it in GitHub Desktop.
Assert equal type size in Rust
use std::mem::transmute;
macro_rules! assert_eq_size {
($x:ty, $($xs:ty),+ $(,)*) => {
$(let _ = transmute::<$x, $xs>;)+
};
($label:ident; $($rest:tt)+) => {
#[allow(dead_code, non_snake_case)]
fn $label() {
assert_eq_size!($($rest)+);
}
};
}
assert_eq_size! { some_sizes;
[u8; 4],
(u16, u16),
u32,
}
fn main() {
// Change me to any other number
const N: usize = 2;
assert_eq_size!(u32, [u16; N]);
}
@nvzqz
Copy link
Author

nvzqz commented Nov 9, 2017

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment