我升级了actix-rt到2.0.2版本后,为什么会出现“系统未运行”错误?

15

我尝试将actix_rt更新到2.0.2,但自那以后一直遇到以下错误:

thread 'main' panicked at 'System is not running'

这是我的最简实例:

# Cargo.toml
[dependencies]
actix = "0.10"
actix-web = { version = "3.3.2", default-features = false }
actix-rt = "2.0.2"
//! main.rs
use actix_rt;
use actix_web::{HttpServer, App, HttpResponse};

async fn hello() -> HttpResponse {
    HttpResponse::Ok().finish()
}

#[actix_rt::main]
async fn main() -> std::io::Result<()> {
    let server = HttpServer::new(move || {
        App::new().route("/", actix_web::web::get().to(hello))
    });
    server.bind("127.0.0.1:8080")?.run().await
}

我猜这一定是actix crates之间的某些版本不兼容。我需要actix_rt 2.0.x,以便与Criterion集成。

是否有一组版本号可以使它们一起工作?

2个回答

16

你的actix crates版本不兼容。你可以将actix-rt降级到1,或者升级到beta版本,例如:

actix = "0.11.0-beta.2"
actix-web = "4.0.0-beta.3"
actix-rt = "2.0.2"

6
谢谢,它对我有用。这是我的第一个Rust程序,也是我遇到的第一个错误,说实话,我觉得没有一个有意义的错误消息指引我方向,让我感到相当失望。“系统未运行”,谢谢明显船长!如果编译器可以检查某些仓库的不兼容版本并报告确切的错误,那将是很棒的!我会继续学习Rust,但如果类似的事情经常发生,我就会放弃。在学习一门新语言时,良好的错误报告是必需的。 - chriszichrisz
2
@Max 但是我怎么知道哪个版本是相互兼容的呢? - astackoverflowuser
3
@Eren 我在这里查看了https://crates.io/crates/actix-rt/2.1.0/dependencies。我同意这很令人困惑,也是可以避免的,正如在这里指出给维护者https://github.com/actix/actix-net/issues/281#issuecomment-792275955。 - Max

1
在你的cargo.toml文件中使用以下依赖关系:
actix = "0.11.0"
actix-web = "3.3.2"
actix-rt = "1.1.1"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接