Open joshtriplett opened 7 months ago
To ensure that it's noted: if both item and expression const
blocks are valid in the same position (i.e. in statement position), a rule to disambiguate would be needed (like for statement versus expression if
-else
). IMO it would be quite unfortunate for item-level const
blocks to be evaluated pre-mono if that same const
block but statement-level would be evaluated post-mono.
Additionally: since const { assert!(...) }
is post-mono (due to using the generic context), it's potentially desirable to push people towards using const _: () = assert!(...);
(which is pre-mono) whenever possible (not capturing generics).
In discussion of https://github.com/rust-lang/libs-team/issues/325 (a proposal for a compile-time assert macro), the idea came up to allow
const {}
blocks at item level, and then have people useconst { assert!(...) }
.@rust-lang/libs-api would like some guidance from @rust-lang/lang about whether lang is open to toplevel
const { ... }
blocks like this, which would influence whether we want to add a compile-time assert macro, as well as what we want to call it (e.g.static_assert!
vsconst_assert!
vs some other name).Filing this issue to discuss in a lang meeting. This issue is not seeking any hard commitment to add such a construct, just doing a temperature check.