Skip to content

Commit 1b9159e

Browse files
committed
Add disclaimer on size assertion macro
Sometimes people are inspired by rustc to add size assertions to their code and copy the macro. This is bad because it causes hard build errors. rustc happens to be special where it makes this okay.
1 parent 32aa405 commit 1b9159e

File tree

1 file changed

+7
-0
lines changed
  • compiler/rustc_index/src

1 file changed

+7
-0
lines changed

compiler/rustc_index/src/lib.rs

+7
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,13 @@ pub use {idx::Idx, slice::IndexSlice, vec::IndexVec};
2929
pub use rustc_macros::newtype_index;
3030

3131
/// Type size assertion. The first argument is a type and the second argument is its expected size.
32+
/// Note to the reader: Emitting hard errors from size assertions like this is generally not
33+
/// recommended, especially in libraries, because they can cause build failures if the layout
34+
/// algorithm or dependencies change. Here in rustc we control the toolchain and layout algorithm,
35+
/// so the former is not a problem. For the latter we have a lockfile as rustc is an application and
36+
/// precompiled library.
37+
///
38+
/// Short version: Don't copy this macro into your own code. Use a `#[test]` instead.
3239
#[macro_export]
3340
macro_rules! static_assert_size {
3441
($ty:ty, $size:expr) => {

0 commit comments

Comments
 (0)