更改每晚的Rust版本



我试图通过命令cargo +nightly build --release -Z unstable-options构建rls,但出现了以下错误:

error[E0599]: no method named `expect_none` found for enum `Option<Fingerprint>` in the current scope
--> /Users/cjw/.cargo/registry/src/github.com-1ecc6299db9ec823/rustc-ap-rustc_span-705.0.0/src/lib.rs:2003:48
|
2003 |                 cache[index].replace(sub_hash).expect_none("Cache slot was filled");
|                                                ^^^^^^^^^^^ method not found in `Option<Fingerprint>`

搜索后,我发现expect_none是夜间功能,似乎已被删除。

所以我想也许我应该更改rust编译器的版本来解决编译问题。如果这是正确的解决方案,我该怎么做?有人能提供一些详细的建议吗?

使用rustup可以管理不同的夜间版本。有关详细信息,请参阅版本指南。

由于Option::expect_none在3月25日被删除,我们可以通过以下方式获得3月24日的夜间:

rustup toolchain install nightly-2021-03-24 --force

注意:使用--force选项是因为组件rustfmtclippy可能丢失。

切换到新下载的工具链:

rustup default nightly-2021-03-24

如预期的那样,以下main.rs现在应该恐慌:

#![feature(option_expect_none)]
fn main() {
let value = Some(42);
value.expect_none("The answer");
}

如果你很好奇,你可以用nightly-2021-03-26尝试一下,你会发现它会给你预期的错误,表明它确实被删除了:

error[E0599]: no method named `expect_none` found for enum `Option<{integer}>` in the current scope
--> src/main.rs:5:11
|
5 |     value.expect_none("Expected none!");
|           ^^^^^^^^^^^ method not found in `Option<{integer}>`

相关内容

  • 没有找到相关文章