【问题标题】:Conditional compilation in Rust 0.10?Rust 0.10 中的条件编译?
【发布时间】:2014-06-19 00:50:16
【问题描述】:

我一直在使用 0.10,最近设置了一个 nightly 版本来试验 Box 和朋友。

现在我有使用 ~str 的 0.10 代码和使用 String 的 pre0.11 代码,因为 to_owned 已过时。我想我可以这样做:

#[cfg(rust_version = "0.10")]
fn my_old_func() -> Option<~str> {
}

#[cfg(not(rust_version = "0.10")]
fn my_old_func() -> Option<String> {
}

并在编译期间传递--cfg rust_version:0.11。但是编译器仍然对现在删除的~ 运算符感到窒息。有没有办法使用条件编译或其他机制让代码在 0.10 和尚未发布的 0.11 下都可以工作?

我想我可以回退到使用 cpp 和 #ifdef 但这似乎是在跳出 Rust 思维方式。

【问题讨论】:

  • 顺便说一句,我认为您必须通过 --cfg 'rust_version="0.11"' 才能使 cfg 工作。

标签: rust rust-obsolete


【解决方案1】:

不,您对此无能为力。

我们的典型建议是不要使用 0.10,而是坚持使用 nightlies。

【讨论】:

  • 展开,这是因为解析器不是一个完全不同的步骤,就像 C++ 预处理器一样。
猜你喜欢
  • 2019-08-09
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多