Function core::intrinsics::const_eval_select [−][src]
pub unsafe fn const_eval_select<ARG, F, G, RET>(
arg: ARG,
_called_in_const: F,
called_at_rt: G
) -> RET where
F: ~constFnOnce<ARG, Output = RET>,
G: FnOnce<ARG, Output = RET> + ~constDrop,
🔬 This is a nightly-only experimental API. (const_eval_select
)
const_eval_select will never be stable
Expand description
根据上下文选择要调用的函数。
如果在编译时对该函数求值,那么这个内部函数的调用将被替换为 called_in_const
的调用。
否则,它会被替换为对 called_at_rt
的调用。
类型要求
这两个函数必须都是函数项。它们不能是函数指针或闭包。
arg
将是传递给两个函数之一的参数,因此,两个函数必须接受相同类型的参数。
两个函数都必须返回 RET。
Safety
这个内部函数允许在 const fn
中破坏 引用透明性,因此是 unsafe
的。
使用这个内部函数的代码必须非常小心,以确保 const fn
在它们被评估时保持引用透明。
Rust 编译器假定将调用替换为 const fn
是合理的,它是在编译时对其求值所产生的结果。
如果在运行时评估函数会产生不同的结果,或者有任何其他可观察到的副作用,则行为是未定义的。