无法在 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 版本
步骤一 运行:
- 使用
sudo apt install cargo
安装 Cargo(和 Rust)
- 使用
cargo new hello
创建了一个项目
- 在
Cargo.toml
文件的 [dependencies]
下添加了 actix-web = "0.7.8"
- 运行
cargo run
并得到以下编译错误:
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。
我正在尝试使用 Cargo 来摆弄 "actix-web" 板条箱。我在 Windows 10.
上使用 Ubuntu 的 WSL 版本步骤一 运行:
- 使用
sudo apt install cargo
安装 Cargo(和 Rust)
- 使用
cargo new hello
创建了一个项目
- 在
Cargo.toml
文件的[dependencies]
下添加了actix-web = "0.7.8"
- 运行
cargo run
并得到以下编译错误:
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。