【发布时间】:2018-09-03 21:54:23
【问题描述】:
我有一个可以作为const 实现的函数:
#![feature(const_fn)]
// My crate would have:
const fn very_complicated_logic(a: u8, b: u8) -> u8 {
a * b
}
// The caller would have:
const ANSWER: u8 = very_complicated_logic(1, 2);
fn main() {}
我想继续支持无法定义此类函数的稳定 Rust。这些稳定的消费者将无法在const 或static 中使用该函数,但应该能够在其他上下文中使用该函数:
// My crate would have:
fn very_complicated_logic(a: u8, b: u8) -> u8 {
a * b
}
// The caller would have:
fn main() {
let answer: u8 = very_complicated_logic(1, 2);
}
如何有条件地编译我的代码,以便我的 crate 的冒险用户可以启用 const fn 支持,稳定的用户仍然可以使用我的代码,并且我不必编写每个函数两次?
同样的问题应该适用于函数的其他修饰符,但我不确定这些修饰符会根据某些条件发生变化的具体情况:
defaultunsafeextern-
pub(和其他可见性修饰符)
【问题讨论】:
标签: rust conditional-compilation