如何在不分拣箱子的情况下将#![feature(***)]添加到另一个箱子的属性中?

时间:2017-10-16 19:09:22

标签: rust rust-cargo rust-crates

每次我看到如下错误:

  

错误:相关常数是实验性的(参见问题#29646)   ......   = help:将#![feature(associated_consts)]添加到crate属性以启用
  =注意:此错误源自当前包之外的宏

我将crate分叉并将该功能添加到crate属性中,然后替换我的Cargo.toml中的依赖项:

[replace."bitflags:1.0.0"]
git = "https://github.com/boehm-s/bitflags"
rev = "bb2afce"

有没有办法摆脱这些错误而不用分配板条箱?

2 个答案:

答案 0 :(得分:5)

相关的常数最近在Rust 1.20中稳定下来;如果升级Rust编译器,此错误应该在没有任何代码更改的情况下消失。

除了[replace] and [patch]之外,您还可以选择.cargo/config override a dependency locally {{}}}而不更改Cargo.toml

答案 1 :(得分:4)

  

如何在不分拣箱子的情况下将#![feature(***)]添加到另一个箱子的属性中?

没有。如果不改变它,你就无法改变另一个箱子。

你正在使用旧的夜间编译器; 更新。如果您使用的是夜间编译器,则您有责任使其保持最新状态。如果您不知道为什么有夜间编译器,请切换到稳定的编译器。

只有在以下情况下才会发生:

  1. 您正在使用夜间编译器。如果你不是,你就不会得到添加属性的建议,这是一个很难的错误。
  2. 您使用的是一个依赖于您的编译器版本中尚未稳定的功能的包,因此需要该属性才能启用它。
  3. 该功能已在较新版本的Rust中得到稳定,因此包不再需要拥有该属性。
  4. 对于此示例,您可以阅读the crates changelog

      

    1.0.0

         
        
    • [重大变化] 宏现在会生成关联的常量(#24)

    •   
    • [重大变化] 由于使用了相关常量,最低支持版本为Rust 1.20

    •