Module rustc_const_eval::transform::check_consts::ops
source · Expand description
Concrete error types for all operations which may be invalid in a certain const context.
Modules
- Types that cannot appear in the signature or locals of a
const fn
.
Structs
- A borrow of a type that contains an
UnsafeCell
somewhere. The borrow might escape to the final value of the constant, and thus we cannot allow this (for now). We may allow it in the future for static items. - A function call where the callee is a pointer.
- A function call where the callee is not marked as
const
. - A call to an
#[unstable]
const fn or#[rustc_const_unstable]
function. - This op is for
&mut
borrows in the trailing expression of a constant which uses the “enclosing scopes rule” to leak its locals into anonymous static or const items. - A call to a
panic()
lang item where the first argument is not a&str
. - Comparing raw pointers for equality. Not currently intended to ever be allowed, even behind a feature gate: operation depends on allocation base addresses that are not known at compile-time.
- Casting raw pointer or function pointer to an integer. Not currently intended to ever be allowed, even behind a feature gate: operation depends on allocation base addresses that are not known at compile-time.
- An access to a (non-thread-local)
static
. - An access to a thread-local
static
. - A borrow of a type that contains an
UnsafeCell
somewhere. The borrow never escapes to the final value of the constant.
Enums
Traits
- An operation that is not always allowed in a const context.