有没有办法使用Rust stable中的不稳定模块?

ide*_*n42 0 rust

如果你不能使用稳定编译器的不稳定模块,Rust如何编译它std?例如,std::Vec使用alloc::raw_vec,一个不稳定的功能.

She*_*ter 5

不,你不能在稳定的Rust上使用不稳定的功能.这是不稳定特征的全部要点:

在稳定版本上允许不稳定的功能有三个问题.

首先,由于网络已经多次展示,仅仅广告不稳定性不起作用.一旦功能被广泛使用,很难改变它们 - 一旦功能可用,很难防止它们被使用.网络上用于支持实验的"供应商前缀"等机制导致了事实上的标准化.

其次,根据定义,不稳定的特征正在进行中.但是beta/stable快照会在预定的时间点冻结​​该功能,而库作者则希望使用该功能的最新版本.

最后,除非我们强制执行,否则我们根本无法为Rust提供稳定性.我们的承诺是,如果您使用Rust的稳定版本,您将永远不会害怕升级到下一个版本.如果图书馆可以选择不稳定,那么如果所有图书馆作者通过同时支持所有三个发布渠道来保证同样的事情,那么我们只能保留这个承诺.


Rust如何编译它std

不能保证Rust是由稳定的编译器构建的,或者它是由提供下载的相同稳定编译器构建的.拥有一个用于引导官方编译器的特殊编译器是非常简单的.请参阅"信任信任的思考",了解如何做到这一点.

实际上,Rust以前使用过特殊的自举编译器,但现在却没有.相反,有一个神奇的配置值,允许不稳定的功能与稳定的编译器一起使用.这样做是为了让Linux发行版可以选择使用自己的工具链构建自己的Rust版本.

我认为公开分享确切细节并不合适.找到答案的努力应足以阻止大多数人在没有充分理由的情况下使用它.如果这是一个单行答案,任何人都可以在不考虑后果的情况下使用搜索引擎轻易找到它,这似乎并不理想.如果一个人关心,他们可以研究Rust源代码和构建系统,这当然是开放的.

如果您需要使用不稳定的功能,请使用每晚版本的Rust.这是最诚实的方法.