无法在 Linux 的 Windows 子系统上使用 Rust 1.25 构建 actix-web 0.7.8

Cannot build actix-web 0.7.8 using Rust 1.25 on the Windows Subsystem for Linux

我正在尝试使用 Cargo 来摆弄 "actix-web" 板条箱。我在 Windows 10.

上使用 Ubuntu 的 WSL 版本

步骤一 运行:

error[E0658]: non-reference pattern used to match a reference (see issue #42640)
--> /home/ash/.cargo/registry/src/github.com-1ecc6299db9ec823/ring-0.13.2/build.rs:375:9
    |
375 |     let (_, _, perlasm_format) = ASM_TARGETS.iter().find(|entry| {
    |         ^^^^^^^^^^^^^^^^^^^^^^ help: consider using a reference: `&(_, _, perlasm_format)`

error[E0658]: non-reference pattern used to match a reference (see issue #42640)
--> /home/ash/.cargo/registry/src/github.com-1ecc6299db9ec823/ring-0.13.2/build.rs:674:9
    |
674 |     for (src, dst) in src_dst {
    |         ^^^^^^^^^^ help: consider using a reference: `&(src, dst)`

error[E0658]: non-reference pattern used to match a reference (see issue #42640)
--> /home/ash/.cargo/registry/src/github.com-1ecc6299db9ec823/ring-0.13.2/build.rs:737:35
    |
737 |             RING_SRCS.iter().any(|(_, f)| cmp(f)) ||
    |                                   ^^^^^^ help: consider using a reference: `&(_, f)`

error[E0658]: non-reference pattern used to match a reference (see issue #42640)
--> /home/ash/.cargo/registry/src/github.com-1ecc6299db9ec823/ring-0.13.2/build.rs:741:35
    |
741 |             RING_SRCS.iter().any(|(_, f)| cmp(f)) ||
    |                                   ^^^^^^ help: consider using a reference: `&(_, f)`

我尝试使用通配符依赖项,但无法正常工作。

rustc 是版本 1.25.0
cargo 是版本 0.26.0

根据Actix-web's crate page, the latest version (0.7.8) requires Rust version 1.26.0 or higher. Based on your error message, it appears to be because they are taking advantage of some improvements made to pattern matching ergonomics in Rust 1.26.0

可以 回滚到 actix-web 的旧版本——版本 0.6.15 似乎是适用于 Rust 1.25.0 的最新版本。但是,您可能 运行 遇到与其他库类似的问题,我绝对建议您更新 Rust,这样您也可以利用这些改进。

更新 Rust 工具链并保持更新的最简单方法是使用 Rustup