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 是合理的,它是在编译时对其求值所产生的结果。 如果在运行时评估函数会产生不同的结果,或者有任何其他可观察到的副作用,则行为是未定义的。